
      Release Note for Broadcom b57ldiag and the tg3d driver
==============================================================
Version 226.03: (02/01/2023)
(driver tg3 v3.139i, patch tg3d v0.28, b57ldiag v226.03, runDiag v226.03)
Fixes:
--------
1. DCSG01411788: Fixed an issue when utility exit for ARM platform

Version 226.02: (01/18/2023)
(driver tg3 v3.139i, patch tg3d v0.28, b57ldiag v226.02, runDiag v226.02)
Enhancements:
--------
1. DCSG01380797: Added support for ARM 64-bit

Version 226.01: (12/16/2022)
(driver tg3 v3.139i, patch tg3d v0.28, b57ldiag v226.01, runDiag v226.01)
Enhancements:
--------
1. DCSG01359714: Additional test support for manufacturing

Version 224.02: (09/07/2022)
(driver tg3 v3.139h, tg3d v3.139h, b57ldiag v224.02, runDiag v224.02)
Fixes:
--------
1. DCSG01302052: lx_diag compilation error on RHEL8.5
   Fix: Fixed the tg3d driver compilation in RHEL 8.5

2. DCSG01312546: lxdiag fails to discover devices in RHEL 9.0
   Fix: Added lxdiag support for RHEL 9.0

3. DCSG01298936: private ioctls fails in RHEL9.0
   Fix: Private IOCTLs are handled by ndo_siocdevprivate in > 5.14 kernels

Version 224.01: (08/23/2022)
(driver tg3 v3.139h, tg3d v3.139h, b57ldiag v224.01, runDiag v224.01)
Problems:
--------
1. Problem (DCSG01264823)
                tg3d driver compilation fails on RH 9.0
        Fix:
                Fixed the tg3d driver compilation

Version 219.01: (03/16/2021)
(driver tg3 v3.139b, tg3d v3.139b, b57ldiag v219.01, runDiag v219.01)
Problems:
--------
1. Problem (CTRL-47397)
                lxdiag fail to run RH 8.1/8.2
        Fix:
                Removed the dependency of tg3d patch

Version 215.02: (08/26/2019)
(driver tg3 v3.137x, patch tg3d v0.23, b57ldiag v215.02, runDiag v215.02)
Enhancements:
 =============
1. b57ldiag: enable lx diag nvram option for specific OEM (CTRL-42622)
Problems:
--------
1. Problem (CTRL-42622)
		Display specific nvram option from lxdiag
	Fix:
		Updated Subsystem ID properly to display specific nvram
		option

Version 215.01: (08/09/2019)
(driver tg3 v3.137x, patch tg3d v0.23, b57ldiag v215.01, runDiag v215.01)
Enhancements:
 =============
1. b57ldiag: enable lx diag nvram option for specific OEM (CTRL-40816)
Problems:
--------
1. Problem (CTRL-31289)
		b57ldiag doesnt work on SLES 15
	Fix:
		Modified scripts and source code to use ip link commands

Version 215.00: (01/24/2019)
(driver tg3 v3.137x, patch tg3d v0.23, b57ldiag v215.00, runDiag v215.00)
Enhancements:
 =============
1. b57ldiag: Enhance to support PHY power down mode (CTRL-34330)

Version 214.03: (9/20/2018)
(driver tg3 v3.137x, patch tg3d v0.23, b57ldiag v214.03, runDiag v214.03)
Problems:
--------
1. Problem (CTRL-30793)
		lxdiag shows only one port for the 2 port card
	Fix:
		Increased the sleep time after insmod tg3d.ko to 10 secs
		from 2 secs

Version 214.02: (7/13/2018)
(driver tg3 v3.137x, patch tg3d v0.23, b57ldiag v214.02, runDiag v214.02)
Enhancements:
 =============
1. Add sysops support for HPE NX1 5719 boards to b57ldiag (CTRL-29864)
   Note: sysop mode is supported and tested only for 5719/5720 NX1 cards.

Version 214.01: (6/21/2018)
(driver tg3 v3.137w, patch tg3d v0.22, b57ldiag v214.01, runDiag v214.01)
Problems:
--------
1. Problem (CTRL-29863)
		NX1: lxdiag sourcing Config file enters to secfg menu
	Fix:
		Updated secfg to support sourcing config file

Version 214.00: (5/11/2018)
(driver tg3 v3.137w, patch tg3d v0.22, b57ldiag v214.00, runDiag v214.00)
Enhancements:
 =============
1. Add sysop support
   Note: sysop mode is supported and tested only for 5720 NX1 card.

Problems:
  ----------
1. Problem (CTRL-28904)
		unable to run lxdiag on Rh7.4
	Fix:
		Updated tg3d patch and used latest 3.137w tg3 driver.
2. Problem (CTRL-28971)
		NX1: b57ldiag to support sysops commands to install nvram
		     images on a Blank Cards
	Fix:
		Added sysop mode support in b57ldiag

Version 20.6.00: (9/8/2016)
(driver tg3 v3.137m, patch tg3d v0.21, b57ldiag v20.6.00, runDiag v20.6.00)
Enhancements:
 =============
1. Request
      Update version to 20.6.00
      
Version 20.4.00: (5/13/2016)
(driver tg3 v3.137m, patch tg3d v0.21, b57ldiag v20.4.00, runDiag v20.4.00)
Enhancements:
 =============
1. Request
      Update version to 20.4.00
      
Version 17.4.02: (3/22/2016)
=========================
(driver tg3 v3.137m, patch tg3d v0.21, b57ldiag v17.4.02, runDiag v17.4.02)
Enhancement:

1. CTRL-21842
	  Need b57diag support for new 5719 LFA generic IDs
		
Version 17.4.01: (12/18/2015)
=========================
(driver tg3 v3.137m, patch tg3d v0.21, b57ldiag v17.4.01, runDiag v17.4.01)
Problems:
  ----------
1. Problem (CTRL-21330) 
		ldiag is not compatible with RHEL 7.2
	Fix: 
		Updated tg3 driver and tg3d patch.

	 Enhancement:
1.CTRL-21390:
		The option 24 and 60 of secfg need to sync. with DOS mode.

		
Version 17.4.00 (2015.9.25)
=========================
(driver tg3 v3.137d, patch tg3d v0.20, b57ldiag v17.2.00, runDiag v17.2.00)
	Problems:
  ----------
1. Problem (CTRL-20934) 
		VPD export created via vpdgen does not appear correct cannot be restored 
	Cause: 
		The YB field had a wrong type when genetated values by vpdgen. 
	Fix: 
		Modified as a correct type for YB field.

Version 17.2.00: (7/31/2015)
=========================
(driver tg3 v3.137d, patch tg3d v0.20, b57ldiag v17.2.00, runDiag v17.2.00)
	Problems:
  ----------
  1. Problem (CTRL-20724)
         lxdiag seprg is unable to program AT45DB081E (Rev E)
        Cause:
          Buffer address is wrong so that lcdiag crash.
	Fix:
          Fixed buffer error when to check CMM of PXE image.
 
Version 17.0.05: (3/20/2015)
=========================
(driver tg3 v3.137d, patch tg3d v0.20, b57ldiag v17.0.05, runDiag v17.0.05)
	Problems:
  ----------
  1. Problem (CTRL-20250)
        The b57ldiag got a d2 error message.
       Cause:
         Reset operation will affect APE to restart so that host cannot take a 
         resource. 
       Fix:
         Modified test flows to avoid to reset operation.

  2. Problem (CTRL-20315)
  		To execute b57lnxdaig will see 'Hunk #3 FAILED at 3506' and '1 out of 8 hunks FAILED' messages.
  	  Fix:
  	     Updated tg3d driver to fix this problem.

  3. Problem (CTRL-20395)
  		Linux diag fails to load tg3d drivers and utility fails to list the adapters.
      Cause:
        The tg3-v3.137d cannot support Redhat EL 6.6.
      Fix:
        Updated tg3 driver to v3.137i version by patch-v0.20.

  4. Problem (CTRL-20499)
  		The Bit_0 of APE_FW_BEHAVIOR cannot restore back to 1 after nictest 
	  Fix: Modified restore APE_FW_BEHAVIOR values before the APE reset.      
     	
Version 17.0.04: (1/30/2015)
=========================
(driver tg3 v3.137d, patch tg3d v0.18, b57ldiag v17.0.04, runDiag v17.0.04)
    Enhancement:
  ----------
  1. Added an option to enable/disable advertise OEM feature through MBA.
     	- 94. Advertise OEM feature through MBA (Enabled 1, Disabled 0


Version 17.0.03: (12/19/2014)
=========================
(driver tg3 v3.137d, patch tg3d v0.18, b57ldiag v17.0.04, runDiag v17.0.04)
    Problems:
  ----------
    1. Problem (CTRL-20108)
        The device cannot be found when rerun b57ldiag before to execute nictest. 
       Cause:
         The fastboot bit offset of RXCPU is different than others in 5725.
       Fix:
         Added a check function to separate this bit offset.

    2. Problem (CTRL-20168)
	      The APE Register and Memory Test has error messages within 10 times.
       Cause:
	      APE control regiseter has a wrong setting after reset commands.
       Fix:
        Added a correct write value to this setting.

    3. Problem (CTRL-20167)
        A2 Control Registers has a error about 10 times in enginnering mode.
       Fix:
        This problem is gone for 100 iterations.

    4. Problem (CTRL-20250)
        b57ldiag got a D2 error message.
       Fix:
        This problem is gone for 100 iterations.

    5. Problem (CTRL-20258)
        Please update the copyright year to reflect year of 2015.	  
       

Version 17.0.02: (10/28/2014)
=========================
(driver tg3 v3.137d, patch tg3d v0.18, b57ldiag v17.0.02, runDiag v17.0.02)
           
Enhancement:
    1. Update nvram option ASPM_SUPT.

Version 17.0.01: (10/24/2014)
=========================
(driver tg3 v3.137d, patch tg3d v0.18, b57ldiag v17.0.01, runDiag v17.0.01)
           
Enhancement:
    1. Resolve CQ7396-Add options in the nvram menu for enable/disable the L0s/L1 advertisment.

Version 17.0.00: (9/9/2014)
=========================
(driver tg3 v3.137d, patch tg3d v0.18, b57ldiag v17.0.00, runDiag v17.0.00)
  Problems:
  ----------
    1. Problem (CQ73736)
        b57ldiag: It restore multiple SDID when program image with '-i' option.
       Fix:
         Add the -i option to support restore SDID when programmin image.
         
Enhancement:
    1. Update OEM's SN, EC, V2, V4 field when programming OEM's image.         
         
Version 16.8.00: (8/1/2014)
=========================
(driver tg3 v3.137d, patch tg3d v0.18, b57ldiag v16.8.00, runDiag v16.8.00)
  Problems:
  ----------
    1. Problem (CQ73459)
        Sometimes the b57ldiag got a d2 error message when ILO sharing port has enabled.
       Fix:
         Avoid buffer manager state machine is reset in "nictest a2".
    2. Problem (CQ73646)
        b57ldiag - All the reset options doesn't work.
       Cause:
         b57ldiag is not support reset options.
       Fix:
         Modify b57ldiag user's guide.
 	3. Problem (CQ73654)
        The device not found when execute "nictest" / exit b57ldiag ,then reopen 
        b57ldiag.
       Cause:
         APE CPU is locked by b57ldiag when APE reset many time.
       Fix:
         Resst APE's CPU one time of end of test to avoid locked by b57ldiag.
         
    4. Problem (CQ73700)
        b57ldiag: VPD ID Tag 0 for Product Name get null when into 'vpdsecfg' and press enter key.
       Fix:
         Avoid updating the VPD field if enter key is pressed.
    
Version 16.6.02: (4/23/2014)
=========================
(driver tg3 v3.136b, patch tg3d v0.18, b57ldiag v16.6.02, runDiag v16.6.02)
  Problems:
  ----------
    1. Problem (CQ73414)
         Show PXE version incorrect in Redhat7
       Cause:
         Version address offset error.
       Fix:
         Modify the offset to get a correct value.

Version 16.6.01: (4/21/2014)
=========================
(driver tg3 v3.136b, patch tg3d v0.18, b57ldiag v16.6.01, runDiag v16.6.01)
  Problems:
  ----------
    1. Problem (CQ73402)
         Unable to list NIC devices.
       Cause:
         The ifconfig tool behavior is different in Redhat7.
       Fix:
         Modify the behavior to get the NIC device for Redhat7.

Version 16.6.00: (4/17/2014)
=========================
(driver tg3 v3.136b, patch tg3d v0.18, b57ldiag v16.6.00, runDiag v16.6.00)
  Problems:
  ----------
    1. Problem (CQ72944)
         Failed to build tg3d driver in RHEL7.0 SS4
       Fix: 
         Update tg3 driver as v3.136b.

    2. Problem (CQ73392)
         The CCM version is incorrect.
       Fix:
         Use another field to show CCM version.

         
Version 16.4.04: (2/7/2014)
=========================
(driver tg3 v3.130.1a, patch tg3d v0.17, b57ldiag v16.4.04, runDiag v16.4.04)
  Problems:
  ----------
    1. Problem (CQ72433)
         Failed to display correct CCM version.
       Fix: 
         Use string instead of character to print display.
         
Version 16.4.03: (12/27/2013)
=========================
(driver tg3 v3.130.1a, patch tg3d v0.17, b57ldiag v16.4.03, runDiag v16.4.03)
  Problems:
  ----------
    1. Problem (CQ71781)
         Parameters not working of sedump Vf[filename] Vl0.
       Fix: 
         Add a -l0 option to dump all nvram data. 


Version 16.4.02: (10/30/2013)
=========================
(driver tg3 v3.130.1a, patch tg3d v0.17, b57ldiag v16.4.02, runDiag v16.4.02)
  Problems:
  ----------
    1. Problem (CQ71746)
         b57ldiag need to delete standalone CCM binary when MBA is programmed with built-in CCM
       Fix: 
         Delete CCM in the NVRAM when users program MBA with built-in CCM. 

Version 16.4.02: (10/30/2013)
=========================
(driver tg3 v3.130.1a, patch tg3d v0.17, b57ldiag v16.4.02, runDiag v16.4.02)
  Problems:
  ----------
    1. Problem (CQ71615)
         Memory write shows error message in Linux diag.
       Cause: 
         We use Tcl_GetIntFromObj() to get inputs, so it will be mixed if we type values greater than 0x80000000.
       Fix: 
         Use Tcl_GetLongFromObj() instead of Tcl_GetIntFromObj().

   Enhancement:
   ----------
    1. CQ71546: Update LED option to list Link/Activity LED option in secfg menu. 
    2. CQ71528: Add a command to program MAC address in Linux diag.
         Usage :  secfg1 -m<mac address>
         Example: secfg1 -m00:01:02:03:04:05 


   Note:The Glibc library version needs greater than 2.3.4 on X64 OS.

Version 16.4.01: (10/15/2013)
=========================
(driver tg3 v3.130.1a, patch tg3d v0.17, b57ldiag v16.4.01, runDiag v16.4.01)
 
   Enhancement:
    1. CQ71387: Add diag ability to control new NVM control bit 
                for autoneg 1g half duplex disable option.
        Note: The new option is "91. AutoNeg 1G Half Duplex Advertisement".


Version 16.4.00: (10/4/2013)
=========================
(driver tg3 v3.130.1a, patch tg3d v0.17, b57ldiag v16.4.00, runDiag v16.4.00)
 
  Problems:
  ----------
    1. Problem (CQ71102)
        B57ldiag unable to program o57762c2.01 OTP image to blank 57762A1 parts.
       Cause:
        B57ldiag does not identify 57762A1 parts correctly.
       Fix:
        Add code to identify the 57762A1 part correctly.	
 
   Enhancement:
    1. Add option 66. NCSI Host to BMC path in secfg menu for 5720.
    2. CQ71164: OEM would like to have FoD feature in Linux diag.
    3. CQ70665: The description is not perfect when nvram is empty to program a boot code.
        
Version 16.2.04: (8/14/2013)
=========================
(driver tg3 v3.130.1a, patch tg3d v0.17, b57ldiag v16.2.04, runDiag v16.2.04)
  Problems:
  ----------
    1. Problem (CQ70264)
        After program ISCSI/CCM got "sechksum" failed on B57ldiag with PPC system.
       Fix:
        Add byte swap functions when to calculate iboot chksum.	

    2. Problem (CQ70401)
        Filter out the special characters from Broadcom lx_diag tool output.
       Fix:
        Remove escape character.

    3. Problem (CQ70556)
        B57ldiag - display all 0s for mac address in 57766 OTP.
       Fix:
        Add a strap pin check and bypass nvram_read on OTP mode.

    4. Problem (CQ70558)
        B57ldiag - will insmod tg3d.o for kernel other than 2.6,3.0, or 3.2
       Fix:
        Modify the kernel version check method in runDiag to make ko file 
        used for module insertion at Linux 3.x system.

    5. Problem (CQ70557)
        B57ldiag - ./runDiag returns a missing system.h error.
       Fix:
        Update tg3d patch driver to 0.17 version.

Version 16.2.03: (7/31/2013)
=========================
(driver tg3 v3.130.1a, patch tg3d v0.16, b57ldiag v16.2.03, runDiag v16.2.03)
  Problems:
  ----------
    1. Problem (CQ70264)
        After program ISCSI/CCM got "sechksum" failed on B57ldiag with PPC system.
       Fix:
        Add byte swap functions when to calculate iboot chksum.	

    2. Problem (CQ70265)
        NICTEST failed on A4 for logan on PPC system.
       Fix:
        Skip offset 0x4 register of PCI configure on A4.

    3. Problem
        NICTEST failed on G1 on PPC system.
       Fix:
         1. Add BBYTE_SWAP functions for big endian system.

  Enhancement:
    1. Extend max device number to 32.

Version 16.2.02: (7/18/2013)
=========================
(driver tg3 v3.130.1a, patch tg3d v0.16, b57ldiag v16.2.02, runDiag v16.2.02)
  Problems:
  ----------
    1. Problem (CQ69846)
         B57ldiag failed to erase CCM.
       Fix:
         Use strtol() instead of atoi() when input is hex format.
    
    2. Problem (CQ69847)
         B57ldiag "upgfrm -b " command unable to erase VPD data on B57ldiag.
       Fix:
         Update nvram_nonBufferedFlash() and nvram_BufferedFlash() from B57Diag.

    3. Problem (CQ69848)
         B57ldiag failed to display command on log file.
       Fix:
         Add tcl command messages into a log file.

    4. Problem (CQ69850)
         B57ldiag exited when type "apeotpkey" command.
       Fix:
         Windows and Linux are not support apeotpkey command.

  Enhancement:
    1. CQ69849 - Please support showing up the number for "diagcfg" command .

Version 16.2.01: (6/28/2013)
=========================
(driver tg3 v3.130.1a, patch tg3d v0.16, b57ldiag v16.2.01, runDiag v16.2.01) 
  Problems:
  ----------
    1. Problem (CQ68524)
         b57ldiag: Device list show incorrect information on B57787 B0 with OTP.
       Fix:
         Add code to support 57787 OTP.

  Enhancement:
    1. CQ69715 - Programming 5725 master image does not preserver BMC MAC address.
    2. CQ69680 - Linux : ISCSI CFG 2/3 is not align on B57ldiag.
    
         
Version 16.2.00: (6/3/2013)
=========================
(driver tg3 v3.130.1a, patch tg3d v0.16, b57ldiag v16.2.00, runDiag v16.2.00) 
  Problems:
  ----------
    1. Problem (CQ68745)
         Linux : B57ldiag upgrade BC version is incorrect on PPC system.
       Cause:
         It is a big-endian issue.
       Fix:
         Swap as big-endian format.

    2. Problem (CQ68746)
         Linux : B57ldiag failed to program ISCSI/CCM on PPC system.
       Cause:
         It is a big-endian issue.
       Fix:
         Swap as big-endian format.
    
    3. Problem (CQ68462)
         57ldiag unable recognize NIC after launch b57ldiag on PPC system
       Cause:
         Need to modprobe ptp driver on RedHat PPC

   

Version 16.0.05: (4/18/2013)
=========================
(driver tg3 v3.130.1a, patch tg3d v0.16, b57ldiag v16.0.05, runDiag v16.0.05) 
  Problems:
  ----------
    1. Problem (CQ68761)
         b57ldiag: 5725-B0- APE fw stopped working after nictest complete on OEM system.
       Cause:
         APE firmware was halted after running nictest.
       Fix:
         Restart APE fw after nictest completes.

    2. Problem (CQ68714)
         b57ldiag failed to prg/upgrade DASH.
       Cause:
         Obsolete code was used which forbid the programming of DASH firmware.
       Fix:
         Synchronize to the latest code.
    
    3. Problem (CQ68316)
         b57ldiag failed to show OTP with "dir" command for 57766 OTP.
       Fix:
         Identify OTP mode and display OTP mode if "dir" command was entered.

    4. Problem (CQ68319)
         Advanced FW Init unable to show ASF firmware on B57ldiag.
       Fix:
         Search and display the ASF firmware version.

    5. Problem (CQ68760)
         b57ldiag: Please update ad57767.bin to be consistent with b57diag.
       Fix:
         Update to the latest ad57767.bin.    

Version 16.0.04: (4/10/2013)
=========================
(driver tg3 v3.130.1a, patch tg3d v0.16, b57ldiag v16.0.04, runDiag v16.0.04) 
  Problems:
  ----------
    1. Problem (CQ68410)
         b57ldiag: 5725-B0- No input word show up in mancfg option.
       Fix:
         Add code to support priting input options on the screen.

    2. Problem (CQ68438)
         Tg3: Get incorrect NVRAM size with 5719.
       Cause:
         B57ldiag does not calculate the correct NVRAM size.
       Fix:
         Calculate the correct NVRAM size.
    
    3. Problem (CQ68316)
         b57ldiag failed to show OTP with "dir" command for 57766 OTP.
       Fix:
         Identify OTP mode and display OTP mode if "dir" command was entered.

    4. Problem (CQ68319)
         Advanced FW Init unable to show ASF firmware on B57ldiag.
       Fix:
         Search and display the ASF firmware version.

    5. Problem (CQ68525)
         b57ldiag: Exit b57ldiag caused nic card does not work.
       Cause:
         tg3 and tg3d driver coexisted.
       Fix:
         Disabled tg3 driver when entering b57ldiag and resume tg3 driver
         after exit of b57ldiag.

    6. Problem (CQ68542)
         B57ldiag some FW execute field display not consistent with dosdiag.
       Fix:
         Make the FW execute field consistent with dosdiag.

    7. Problem (CQ68543)
         B57ldiag NVRAM Type not SYNC with dosdiag.
       Fix:
         Update the b57ldiag NVRAM type to be consistent with dosdiag.
    
    8. Problem (CQ68544)
         B57ldiag failed to show all subsystem device ID on "secfg".
       Fix:
         Display all susbsystem device ID on "secfg".

    9. Problem (CQ68545)
         APE config version is null on B57ldaig.
       Fix:
         Display the APE config version.    
         
   10. Problem (CQ68599)
         b57ldiag: lxdiag dump image restore failed.
       Cause:
         b57ldiag did not dump the complete image.       
       Fix:
         Calculate the full size of dump image when issuing
         sedump. 

    Enhancement:
    1. Resolve CQ68411 b57ldiag: 5725-B0- Please add apeinfo and apelog command.
    2. Resolve CQ68440 b57ldiag not support cfgpagesize and nvsize command.
    3. Resolve CQ68580 b57ldiag add lxdiag enable AUT management firmware function.
    4. Resolve CQ68385 b57ldiag secfg content consistent with dosdiag for all device.
    
Version 16.0.03: (3/14/2013)
=========================
(driver tg3 v3.130.1a, patch tg3d v0.16, b57ldiag v16.0.03, runDiag v16.0.03)
  
  Problems:
  ----------
    1. Problem (CQ7738)
         b57ldiag support for 57762.
       Fix:
         Add support for 57762.

    2. Problem (CQ68202)
         B57ldiag shows up incorrect board name on 5727.
       Fix:
         Show the correct board name of 5727.
    
    3. Problem (CQ68204)
         B57ldiag NVRAM type display failed on 5725.
       Cause:
         NVRAM type was not up to date.
       Fix:
         Update the latest nvram table. 

    4. Problem (CQ68205)
         B57ldiag failed to show SMASH for 5725.
       Cause:
         SMASH firmware was not supported in the previous version.
       Fix:
         Add the support for SMASH firmware.

    5. Problem (CQ68206)
         After exit and launch B57ldiag again caused firmware display error.
       Cause:
         SMASH firmware was not supported in the previous version.
       Fix:
         Add the support for SMASH firmware.

    6. Problem (CQ68222)
         Failed to upgrade/program BC on b57ldiag for 5725.
       Fix:
         Add the support for management firmware support.

    7. Problem (CQ68223)
         Failed to upgrade/program NCSI1.207 on b57ldiag for 5725.
       Fix:
         Add the support to program management firmware.
    
    8. Problem (CQ68225)
         Failed to upgrade/program CCM on b57ldiag for 5725.
       Fix:
         Add the support to program CCM.

    9. Problem (CQ68226)
         Failed to upgrade/program MBA on b57ldiag for 5725.
       Fix:
         Add the support to program MBA.

    10.Problem (CQ68227)
         Failed to upgrade/program ISCSI on b57ldiag for 5725.
       Fix:
         Add the support to program ISCSI.

    Enhancement:
    1. Add 57766/57762/57786/57782.

Version 16.0.02: (2/26/2013)
=========================
(driver tg3 v3.130.1a, patch tg3d v0.16, b57ldiag v16.0.02, runDiag v16.0.02)
  
  Problems:
  ----------
    1. Problem (CQ66644)
         External Loopbak D3 failed on an OEM system.
       Cause:
         D3 test is not supported in this OEM system.
       Fix:
         Remove the D3 test in this case.

    2. Problem (CQ67600)
         B57ldiag execute name incorrect on PXE/ISCSI.
       Cause:
         The execute name was not reinitialized after each iteration.
       Fix:
         Reinitialize the execute name after each iteration.
    
    3. Problem (CQ67454)
         Linux: B57ldiag unable to luanch on PPC system.
       Cause:
         ssl lib has a different name on PPC system.
       Fix:
         Update the runDiag script to support the PPC system. 

    4. Problem (CQ66312)
         B57diag test fails to execute under Linux.
       Cause:
         Some tests are not supported in this OEM system.
       Fix:
         Remove unsupported tests in this case.   

Version 16.0.01: (1/25/2013)
=========================
(driver tg3 v3.126c, patch tg3d v0.15, b57ldiag v16.0.01, runDiag v16.0.01)
  
  Problems:
  ----------
    1. Problem (CQ67454)
         B57ldiag APE firmware Execute display incorrect.
       Fix:
         Display APE in the execute column for APE firmware.

    2. Problem (CQ66311)
        Broadcom NX1 b57ldiag utility was not performing the external loopback test.
       Fix:
         Correct the logic to perfrom external loopback test.
    
    3. Problem (CQ67431)
        Linux: b57ldiag PXE version incorrect.
       Cause:
        The newer PXE version has new format.
       Fix:
         Update the code to support new format.    

   Enhancements:
   ----------
    1.	Resolve CQ67389 PCIe Tx de-emphasis for Gen 2.
    2.	Resolve CQ67429 Linux: B57ldiag not support programming CCM.
    3.	Resolve CQ67456 Linux: [Enhancement] B57ldiag CCM version is not vertically aligned.

Version 16.0.0: (1/16/2013)
=========================
(driver tg3 v3.126c, patch tg3d v0.15, b57ldiag v16.0.0, runDiag v16.0.0)
  
  Problems:
  ----------
    1. Problem (CQ66529)
         B57ldiag no paragraphic for "setwol" command.
       Fix:
         Add \n after showing setting WOL messages.

    2. Problem (CQ66527)
         B57ldiag upgrade BC shows incorrect version information on 5717.
       Fix:
         Show the correct version.
    
    3. Problem (CQ66532)
         LInux: VPD information exists on B57ldiag after upgrading BC.
       Fix:
         Remove VPD information after upgrading BC.
    
    4. Problem (CQ66807)
         B57ldiag option 24 is inconsistent with DOS diag.
       Fix:
         Synchronize with the latest DOS diag.

    5. Problem (CQ66809)
         B57ldiag option "7" SDID unable to show correct value.
       Cause:
         Broken logic.
       Fix:
         Show the correct option "7" SDID value.

    6. Problem (CQ66810)
         B57ldiag option "11" product name is null.
       Fix:
         Show the correct product name.
    
    7. Problem (CQ66812)
         B57ldiag option 70 "Clause 37" cannot be saved enabled.
       Cause:
         Broken logic did not save option 70 when changed.
       Fix:
         Save option 70 correctly.

    8. Problem (CQ66813)
         B57ldiag unable to recognize 5720 on Ubuntu.
       Fix:
         Update the runDiag to support kernel version 3.2. 

    9. Problem (CQ66115)
         B57ldiag unable to display command character while enter "source" command.
       Cause:
         Global variable was not reset after the "source" command completes preventing
         display command characters.
       Fix:
         Reset the global variable after "source" command completes.  
  
Version 15.6.1: (11/08/2012)
=========================
(driver tg3 v3.126b, patch tg3d v0.15, b57ldiag v15.6.1, runDiag v15.6.1)
  
  Enhancement:
    1. Support 5717c0 DID 0x1665.

Version 15.6.0: (10/19/2012)
=========================
(driver tg3 v3.125f, patch tg3d v0.15, b57ldiag v15.6.0, runDiag v15.6.0)
  
  Problems:
  ----------
    1. Problem (CQ65718)
         B57ldiag shows 5717C0 Invalid Serial NVRAM format.
       Fix:
         Update b57ldiag to support 5717C0 support, need latest tg3 driver 
         3.125f and tg3d v0.15.
    2. Fixed the problem that the SSL link cannot be established on 
       RH5.8 / SLES11.2 systems.
    3. Run the otp initialization routine only if the chip supports otp.

  Enhancement:
    1. add 5717c0 support

    
Version 15.4.2a: (08/24/2012)
=========================
(driver tg3 v3.123j, patch tg3d v0.14, b57ldiag v15.4.2, runDiag v15.4.3)
  
  Problems:
  ----------
    1. Problem (CQ65233)
         B57ldiag unable to get addon NIC in specific system.
       Fix:
         Update runDiag to recognize addon NIC.

Version 15.4.2: (08/15/2012)
=========================
(driver tg3 v3.123j, patch tg3d v0.14, b57ldiag v15.4.2, runDiag v15.4.2)
  
  Problems:
  ----------
    1. Problem (CQ64951,CQ64258, CQ65081)
         B57ldiag unable recognize device on RH5.8 & SLES11.2.
       Fix:
         Update runDiag to recognize device on RH5.8 & SLES11.2.

Version 15.4.1: (08/14/2012)
=========================
(driver tg3 v3.123j, patch tg3d v0.14, b57ldiag v15.4.1, runDiag v15.4.1)
  
  Problems:
  ----------
    1. Problem (CQ64985)
         iPXE version does not display correctly with b57ldiag.
       Cause:
         Diag does not get the correct ipxe version.
       Fix:
         Shows the correct ipxe version.

    2. Problem (CQ64532)
         Downgrade BC via upgfrm and program img file via seprg, then ccm dispeared.
       Cause:
         Diag does not fully support ccm image.
       Fix:
         Add code to support ccm.

    3. Problem (CQ64951,CQ64258, CQ65081)
         B57ldiag unable recognize device on RH5.8 & SLES11.2.
       Fix:
         Update runDiag to recognize device on RH5.8 & SLES11.2.    

Version 15.4.0: (06/28/2012)
=========================
(driver tg3 v3.123j, patch tg3d v0.14, b57ldiag v15.4.0, runDiag v15.4.0)
  
  Problems:
  ----------
    1. Problem (CQ63553)
         Diag shows incorrect Mac address
       Fix:
         Shows the correct Mac address.

    2. Problem (CQ63197)
         Generate VPD file caused unexpectedly exit b57ldiag.
       Cause:
         Diag does not parse the command correctly which causes unexpectedly exit of diag.
       Fix:
         Add code to check if invalid syntax was entered.

    3. Problem (CQ63236)
         B57ldiag does not support the BOFM for option 84 Backup MAC address.
       Fix:
         Add code option 84 Back MAC address for BOFM support.

    4. Problem (CQ63261)
         Unable to set MAC/Wol Configurations on Selfboot.
       Cause:
         New diag causes this failure.
       Fix:
         Revert back to the old code.

    5. Problem (CQ63456)
         Nictest failed on 5717.
       Fix:
         Use the latest 5717 setting for nictest.

Version 2.18: (05/03/2012)
=========================
(driver tg3 v3.119r, patch tg3d v0.12, b57ldiag v2.18, runDiag v2.18)
  
  Problems:
  ----------
    1. Problem (CQ62384)
         Device on eth0 shown "invalid seiral NVRAM format" when issuing 'dev' command 
         on RH5.7 and RH5.8
       Cause:
         eth0 will be down by kernel if IP configuration not set correctly.
       Fix:
         Rename network interface name 'eth' to a temporary name before calling 
         'ifconfig eth up' in runDiag.

    2. Problem (CQ62535)
         B57ldiag unable to detect all ports for 5719 on specific system.
       Cause:
         A kernel service 'biosdevname' serves to rename all eth to others on backgroup.
         It takes several seconds to complete the renaming process. runDiag tried to bring
         up all eth interfaces before biosdevname completes renaming. That caused B57ldiag
         unable to detect all ports for 5719 on the such secific system.
       Fix:
         Stop 'biosdevname' temporarily before runDiag brings up all eth interfaces.

    3. Problem (CQ62519)
         B57ldiag cannot run Tcl source file.
       Fix:
         This is a code problem. Correct the code logic to resolve this problem.
 
    4. Problem (CQ62517)
         Ctrl+Z caused B57ldiag unable to execute.
       Cause:
         Ctrl+Z sends out a signal SIGTTOU. B57ldiag didn't exit because calling exit() was removed by mistake.
       Fix:
         The correct way to handle SIGTTOU is to call Tcl_Exit() instead of exit().
  
    5. Problem (CQ62538)
         PXE speed was shown when MBA was disabled by issuing 'setmba -d'.
       Cause:
         This is a code problem.
       Fix:
         Don't display PXE speed if MBA is disabled.

    6. Problem (CQ62560)
         B57ldiag cannot execute the command of 'vpdgen'
       Cause:
         This is a code problem. B57ldiag showed "invalid command name" when running it.
       Fix:
         Change the code to fix it.

    7. Problem (CQ61944)
         Error while loading shared libraries libssl.so.6 on SLES11.2 PPC.
       Cause:
         The symbolic links were missed on SLES11.2 PPC.
       Fix:
         Create the corresonding symbolic links to OpenSSL libraries accordingly.



Version 2.17: (01/18/2012)
=========================
(driver tg3 v3.119r, patch tg3d v0.12, b57ldiag v2.17, runDiag v2.17)
  
  Problems:
  ----------
    1. Problem: (CQ60361)
           Mustang shows the error message "Invalid Header" on the version field of APE firmware.
       Cause:
           The header of APE was overwritten by accident when programming a big PXE firmware.
           B57ldiag didn't check the size limit when programming a PXE so that PXE overwrote the header of APE.
       Fix:
           Add code to validate the size when programming PXE firmware.


  Enhancement:

  -----------

    1. CQ59110:

       Provide the access to Network SerDes adjustment parameters.

       Add secfg option 79 and 80.

    2. CQ59746:
       Provide the command "vpdsecfg".

    3. CQ59678:
       Provide the command "apectl".

  
Version 2.16: (11/23/2011)

=========================

(driver tg3 v3.119r, patch tg3d v0.12, b57ldiag v2.16, runDiag v2.16)
  
  Problems:
  ---------
    1. Problem: (CQ59839)
           The command "upgfrm -b" got error messages "Invalid memory reference".
       Cause:
           Index variable wasn't initialized properly.
       Fix:
           Set the index variable properly before used.


Version 2.15: (11/18/2011)

=========================

(driver tg3 v3.119r, patch tg3d v0.12, b57ldiag v2.15, runDiag v2.15)


  Problems:
  ---------

    1. Problem: (CQ59747)
           "upgfrm -b" command didn't resume MAC address for port #2 and #3 on 5719 devices
       Cause:
           Caused by a bad code logic.
       Fix:
           Change the code logic.

   2. Problem: (CQ59745)
           Showing "Invalid EFI type" on FCODE field when running the 'dir' command" on PPC systems.
      Cause:
           Endian problem.
      Fix:
           Handle endian correctly.

   3. Problem: (CQ59792)
           Nictest failed on G7 intermittently on OEM system.
      Fix:
           Add more timeout before checking the test result/status.
           


Version 2.14: (11/14/2011)

=========================

(driver tg3 v3.119r, patch tg3d v0.12, b57ldiag v2.14, runDiag v2.14)


  Problems:
  ---------

    1. Problem: (CQ59670)

           Unable to run ./runDiag in RH5.7

       Cause:

           OpenSSL library libssl and libcrypto stored at /lib instead of /usr/lib. 
           That caused B57ldiag failed to link to them in runtime.

       Fix:

           Changed runDiag script file to link to them correctly.



    2. Problem: (CQ59698)
           B57ldiag unable to show the correct iSCSI version on specific OEM 64-bit system.
       Cause:
           Addressing calculation got wrong.
       Fix:
           Get the correct address pointer.
   

  Enhancements:
  -------------
    1. CQ59680 - Unable to show family version on specific OEM system.
    


Version 2.13: (11/07/2011)

=========================

(driver tg3 v3.119r, patch tg3d v0.12)



    1. Problem: (CQ59540)

           The option '-n' of nictest doesn't function.

       Cause:

           Code broke.

       Fix:

           Re-write the code to fix it.



    2. Problem: (CQ59562)

           Unable to disable PXE and MBA configuration.

       Fix:

           Re-write the code to fix it.

           





Version 2.12: (10/28/2011)

=========================

(driver tg3 v3.119r, patch tg3d v0.12)



    1. Problem: (CQ59477)

           Unable to run "./runDiag"

       Cause:

           B57ldiag was built against openssl-0.9.8 library. However, RH6.1 contains 

           the latest version v1.0.0 instead of v0.9.8. That caused the failure to launch B57ldiag.

       Fix: 

           Update ./runDiag to create a symbolic link to the existing openssl library in a runtime.



    2. Problem: (CQ59460)

           vpdinfo command not supported.

       Cause:

           This command was not registered in TCL interpreter.

       Fix:

           Register the 'vpdinfo' command to TCL interpreter.





Version 2.11: (10/14/2011)

=========================

(driver tg3 v3.119r, patch tg3d v0.12)



    1. Problem: (CQ57891)

           B57ldiag unable to launch on RH6.1 on OEM system.

       Cause:  

           Some newer system has biosdevname installed.  It names the network 

           interface based on the location.  The interface name is like 'em*'

           or 'p*p*' instead of 'eth*'.    Since all interface ioctl's must have 

           parameter definitions begin with interface name,  previous b57ldiag 

           use 'eth*' to search the interface, thus the 'em*' and 'p*p*' cannot 

           be found.

       Fix:  

           Get all interface name before doing ioctl.   

           Then use the exact name to do the interface request.



    2. Problem: (CQ58484)

           Unable to detect any BRCM NICs in B57ldiag.

       Cause:

           The script file ./runDiag loads the right type of kernel driver 

           t3gd.ko or tg3d.o based on the version of Linux kernel.

           The kernels 2.6 or later need to load tg3d.ko; otherwise, tg3d.o 

           loaded. This problem was caused because tg3d.o was loaded 

           for the latest kernel 3.0 wrongly. 

       Fix:

           Load tg3d.ko for kernel 3.0.



    3. Problem: (CQ58871)

           Downgrade ncsi to the previous version, but unable to restore 

           ncsi to the original version.

       Cause:

           The command 'sedump' without the specified size cannot get the 

           whole image to dump. That caused incomplete image to dump and 

           checksum failure.

       Fix:

           To get the whole image to dump.



    Enhancements:

    	. Add global option '-v' to set debug/verbose mode

    	. Add OTP support

    	. Add Tcl support

    	



Version 2.10: (08/05/2011)

=========================

(driver tg3 v3.119r, patch tg3d v0.12)



    1. Problem: (CQ57583)

           B57ldiag did not show an error message if the available space is not enough when programming a firmware.

       Cause:

           The size of EEPROM less than 1kbits not reported correctly.

       Fix:

           Change code to get the correct EEPROM size.

               



Version 2.09: (08/03/2011)

=========================

(driver tg3 v3.119r, patch tg3d v0.12)



    1. Problem: (CQ57397)

         "Invalid memory reference" after running:  

         1) "upgfmr -f -b" 

         2) and then "upgfrm".

       Cause:

         The error occurs when "GetFilename" in-line macro was called 

         after step 1 and 2. 

       Fixed:

         The issue was resolved by replace the in-line macro with actual

         logic in the upgfrm command. 

       Impact:

         None.

         

    Enhancement:

        Display correct SSID for fiber port.

    

         

Version 2.08: (08/02/2011)

=========================

(driver tg3 v3.119r, patch tg3d v0.12)



  1. Problem: (CQ57438)

       Sechksum got CRC error after programming SB image on 5719.

     Cause:

       The CRC of SB format of 5719 was not calculated correctly.

     Fix:

       Change code to get the correct CRC.

  

  2. Problem: (CQ57227)

       Failed to upgrade APE image since of a CRC error.

     Cause:

       Reading the input file was not completed because the expected number of bytes to read was cleared by mistake.

     Fix:

       Amend the code logic to get the complete image to program.



  3. Problem: (CQ57457)

       Programming SB reset the original MAC addresses on 5719.

     Cause:

       Failed to restore the original MAC addresses.

     Fix:

       Handle the restoration of existing MAC addresses for multiple-port devices.



  4. Problem: (CQ57455)

       B57ldiag v2.07 does not support upgfrm -v command.

     Fix:

       Implement as expected.



Version 2.07: (07/26/2011)

=========================

(driver tg3 v3.119r, patch tg3d v0.12)



  1. Problem: (CQ57199)

       After program bootcode, the linux diag shows incorrect NVRAM size.

     Cause:

       For 5718/5719 devices, some 2M flash pinstrap is reused for 4M/8M flash.

       Linux diag cannot write to the NVRAM offset which is bigger than what 

       driver aware of.  In this case, diag can not detect the NVRAM size correctly.

     Workaround:

       Driver reports 8M NVRAM size if the NVRAM's pinstrap is reused, then linux

       diag can write to NVRAM to detect correct size.



  2. Problem: (CQ56982)

       Nictest failed on A5/D2/F7/G group with 5719 fiber.

     Cause:

       Failed to recognize the fiber media so that the device was not setup properly.

     Fix:

       Check the specific bit to recognize the device as fiber mode and setup correctly.



  3. Problem: (CQ56981 and CQ56800)

       Nictest failed on D3 (External PHY Loopback test) with 5719 fiber.

     Cause:

       Failed to recognize the fiber media so that the device was not setup properly.

     Fix:

       Check the specific bit to recognize the fiber mode and setup correctly.



  4. Problem: (CQ57221 and CQ57226)

       B57ldiagi64 unable to launch on RH5.7, RH6.1 and SuSe11.2

     Cause:

       Permission denied.

     Fix:

       Change the permission before releasing publically.







Version 2.06: (07/20/2011)

=========================

(driver tg3 v3.117i, patch tg3d v0.11)



  1. Problem: (CQ56983)

         Got the incorrect version and bad checksum after restoring a dump file

     Cause:

         Data corrupted occured in the dump file

     Fix:

         Dump data to a file correctly.



  2. Problem: (CQ56925)

         Unable to launch on SuSe10.4 x64 systems.

     Cause:

         SuSe10.4 has the older version of GLIBC.

     Fix:

         Re-built B57ldiag on the SuSe10.4 x64 system.



  3. Problem: (CQ56872)

         Unable to program a dump file to NVRAM.

     Cause:

         Code logic went wrongly.

     Fix:

         Correct the code logic.



  4. problem: (CQ56927)

         Unable to get correct info on 5719 SB.

     Cause:

         Failed to read SB image.

     Fix:

         Resolve the code logic.



  5. Problem: (CQ56827)

         Failed to downgrade APE firmware after restoring a dump file.

     Cause:

         Code logic went wrongly.

     Fix:

         Correct the code logic.

 

  6. Problem: (CQ52546)

         B57ldiag manufacturing diag for x86, x64 and PPC

     Fix:

         Enhance B57ldiag to support 5718/19/20 chips for x86, x64 and PPC







Version 2.05: (07/19/2011)

=========================

(driver tg3 v3.117i, patch tg3d v0.11)



  1. Problem: (CQ56825)

         Display wrong device information on 5719 programmed SB image.

     Cause:

         Failed to SB image from NVRAM.

     Fix:

         Read SB image from NVRAM correctly.



  2. Problem: (CQ56928)

         Nictest failed at F7 and G group.

     Cause:

         Failed to read data from APE Ctrl, Shared-Memory and Scratchpad space.

     Fix:

         Setup the write_enable bits properly for APE.



  3.Enhancement:  

          Add extended VPD support.  

     Related commands:

          'seprg -v xx' to program extended VPD from file xx

          'vpdsecfg' to config extended VPD

          'vpdgen -fxx' to generate a text file xx from NVRAM content

          'vpdinfo' to display vpd information

          'vpdread' to read VPD information

          'vpdwrite' to write data to VPD offset

               

  4. Problems: (CQ56828; CQ56839; CQ56931; CQ57039)

  		If upgrade/downgrade FW using command 'upgfrm', the Bootcode version lost; 

  		The NVRAM checksum is incorrect.

     Cause:

        When upgrading/downgrading FW using 'upgfrm', the NVRAM offset for new

        bootcode are mis-calculated.

     Fix: 

        Correctly calculated the offset.

        

  5. Enhancement:

        .  Add command 'setman' to enable/disable/query management firmware setting.

        .  Add command 'mancfg' to config the management firmware.

        .  Add option 'upgfrm -i' to program ISCSI Firmware.

        .  Add option '-b', '-v' to command 'iscsiprg' to program ISCSI config with

           IPv6 format, or both IPv4 and Ipv6 format.



Version 2.04: (June 30, 2011)

=========================

(driver tg3 v3.117i, patch tg3d v0.11)



  1. Problem: (CQ56006)

              G2 failed.

     Cause:

              The error message is "port 1 no link" which caused by tg3d locking out the MII interface.

     Fix:

              Disable the event of "Link Status Changed" before running G2, then restore after finished.



  2. Problem: (CQ565289)

              Linux diag doesn't have 'vpdinfo' command.

  	 Fix:

              Add command 'vpdinfo' to display vpd information.

  

  3. Problem: (CQ56484)

              Got the wrong nvram size if the size is more than 2Mbit for 5719.

     Cause:

              The 2M, 4M and 8M Flashes own the same hardware strapping. 

     Fix:

              Added code to differetiate them.

	 

  4. Problem: (CQ56281)

              Running nictest stops by A3 Interrupt test on PPC.

       Cause:    

              Setting bit 6 and 8 of the PCI Command Register (0x04) caused a Parity error.

              EEH isolated DUT and B57ldiag stopped.

       Fix:

              Ignore the test on PCI Command Register.



  5. Problem: (CQ56477)

              Failed to recognize the uEFI+MBA image when using the dir command.

       Cause: 

              The uEFI's ID was unknown to B57ldiag.

         Fix:

              Added code to recognize uEFI's ID.



  



           



Version 2.03: (June 14, 2011)

=========================

(driver tg3 v3.117i, patch tg3d v0.11)



  1. Problem: (CQ55906)

              External loopback failed because data comparison error.

     Cause:

              A redundant byte was compared by accident.

     Fix:

              To compare the exact size of received data.



  2. Problem: (CQ55902)

              Unable to show APE and iSCSI CFG version.

     Fix:     

              Add code to display verson of APE and iSCSI CFG.

     



  3. Problem: (CQ56049)

              Unable to launch b57ldiagp on SuSe10.4 PPC.

     Fix:     

              Re-compiled b57ldiagp.







Version 2.02: (May 27, 2011)

=========================

(driver tg3 v3.117i, patch tg3d v0.11)



  1. Problem: (CQ54464)

              PHY Loopback failed.

     Cause: 

              Tried to receive data on the non-blocking socket before

              data become available.

     Fix: 

              Check the availability of data before receiving.



  2. Problem: (CQ55343, CQ54800 and CQ54096)

              Unable to execute in kernel 2.6.16(SuSe10.4 and RH5.6)

     Cause:  

              GLIBC_2.7 not found.

     Fix:

              Re-built the executive files under kernel 2.6.16.



  3. Problem: (CQ55540)

              Unable to upgrade pxe image on PPC.

     Cause: 

              Incorrect data endianness.

     Fix: 

              Implemented with Big-endian for PPC.

              

  4. Problem: (CQ54094)

              Show error message when program bootcode after erasing nvram.

     Cause:

              Cuased by a bad code logic.

     Fix:

              Validate NVRAM bootcode before replace the MAC addresess during programing BC.         

              

  5. Problem: (CQ54097)

              External Loop Back Diagnostic Control Registers failed.

     Cause:

              Enable/Disable bits of CPMU changed wrongly when testing A group.

     Fix:

              Ingore to test those bits.

              

  6. Problem: (CQ54105)

              Unable to program NCSI & ISCSI fw on B57ldiag.

     Cause:

              The previous version did not support programming NCSI and iSCSI firmwares.

     Fix:

              Add new codes to support.

            

  7. Fix CQ5436 - Unable to change VPD vendor specific data by using secfg.

     

                         

                                                      



Version 2.01: (driver tg3 v3.117i, patch tg3d v0.11)

  1. Add APE test group for 5717/5718/5719 devices, which include

     . E1. Indirect APE Ctrl Registers

     . E2. APE Ctrl Registers

     . E3. Indirect APE Peripheral Registers

     . E4. APE Peripheral Registers

     . E5. Indirect Shared Memory (00000400-00000FFF)

     . E6. Shared Memory (00000400-00000FFF)

     . E7. Scratch Pad Memory

     . E8. APE Mutex Registers

  2. support 5720 device

  3. Fixed CQ54460 

     Problem : External loopback test fails occasionally.

     Cause   : Both System NetworkManager and b57diag are fighting to control

               the tg3d devices when they are brought up first time.

               NetworkManager tries to assign the interface to a network and get

               and IP address before it eventually give up.

     Fix     : change runDiag script to have the NetworkManager ignore the

               Broadcom devices by modifying the file

               /etc/NetworkManager/nm-system-settings.conf	    		    			

  4. Enhancement (tg3d 0.10):

     Problem : The PHY's auto-powerdown feature as left enabled.

     Change  : Disable APD		

	

Version 2.00: (driver tg3 v3.117i, patch tg3d v0.09)

	Support 5717/5718/5719 devices.



Version 1.76: (driver tg3 v3.92n, patch tg3d v0.06)

    1. Problem: (CQ37532)

           Linux diag will get A2 test fail within 1000 cycles of nictest

       Cause:

           The bit 29 Start/Busy of register 0x44c is not a sticky bit which should not be tested.

       Fix:

           Ingore this bit when running A2 test.



Version 1.75: (driver tg3 v3.92n, patch tg3d v0.06)

    1. Problem: (CQ37158)

           Unable insmod tg3d.ko when running runDiag in SUSE10.2

       Cause:

           tg3 v3.85l driver is not compatible to SUSE10.2

       Fix:

           Replace tg3 v3.85l with tg3 v3.92n



Version 1.75: (driver tg3 v3.85l, patch tg3d v0.06)

    1. Problem: (CQ34876)

           Linux Diag v1.74 failed to be executed in SUSE 9 SP4.

       Cause:

           "Floating point execption" occured since of the older glibc.

       Fix:

           Passing the -Wl,--hash-style=sysv option to gcc tells compiler to use the older style hash on the newer kernel system.





Version 1.74: (driver tg3 v3.85l patch tg3d v0.06)

    1. Problem: (CQ34348)

           5764m-B0 and 5784m-B0 bootcode install will corrupt 0xF0 location.

       Cause:

           ldiag didn't update 0xF0 location after programming the bootcode.

       Fix:

           Added code to update value at 0xF0 and the CRC value





Version 1.73: (driver tg3 v3.85l patch tg3d v0.06)



    1. Problem: (CQ33936)

           5723-B0 mismatched device family during BC upgrade.

       Cause:

           Bond ID dismatched.

       Fix:

           Revised the code to check the correct Bond ID for 5723



    2. Enhancement: (CQ33832)

           B57ldiag needs ASPM & CLKREQ features enhancement.



    3. Enhancement: (CQ33816)

           B57ldiag needs to support ASF 2.0 RMCP feature enhancement.

    

    4. Enhancement:

           B57ldiag needs to support setbit and clearbit commands

    

    5. Enhancement:

           B57ldiag has the same items of secfg as Dosdiag



    6. Remove 5761 and 5761e support



Version 1.72: (driver tg3 v3.85g patch tg3d v0.06)



   1. Revise the previous workaround for the problem CQ33356 introduced at version 1.71.

   2. Problem: (CQ33513)

          B57ldiag v1.71 - 5764m-B0 won't install PXE pci_express (should) and OK w/ pci device (should not).

      Cause:

          Regarded 5764m-B0 as a PCI device.

      Fixed:

          Change code to regard 5764m-B0 as a PCIe device.    

   3. Problem: (CQ33538)

          B57ldiag v1.71 - 5784m-B0 upgfrm -b -f /bc/sb5784m2.10 failed (seprg -f/bc/sb5784m2.10 OK).

      Cause:

          Assigned the wrong pointer to the header of selfboot image when upgrading selfboot image.

      Fixed:

          Correct the wrong pointer.

   4. Problem: (CQ33605)

          B57ldiag - 5764m-B0 iSCSI install failed N/A to this device (b57diag iSCSI OK)..

      Cause:

          5764m was not in the support list for iSCSI.

      Fixed:

          Add 5764m to support iSCSI according to MRD.    

          





Version 1.71: (driver tg3 v3.85e patch tg3d v0.06)

   1. Problem: (CQ33356)

          B57Ldiag:5784m: D1:MAC loop test failed when running nictest - error 130

          

      Cause:

          The Link Speed mode was enabled when running D1 MAC loop test

          

      Fixed:

          Disabled the Link speed mode    





Version 1.70: (driver tg3 v3.85e patch tg3d v0.06)

   1. Enhancement :

          Support 5784M, 5764M and 5723 Ax chips

          

Version 1.69: (driver tg3 v3.79b patch tg3d v0.06)

   1. Problem: (CQ31466)

          5901 (Fast Ethernet) - pkttest -e failed speed 1000 should be N/A

      Cause:

          B57ldiag didn't identify 5901 device

      Fixed:

          Support 5901 device.  



Version 1.68: (driver tg3 v3.79b patch tg3d v0.06)

   1. Problem: (CQ30912)

          5715 - v3.30/3.29 bootcode copy over to 5715c

      Cause:

          B57ldiag didn't identify the bootcode version string correctly, so it couldn't tell

          Serdes and Copper image correctly.

      Fixed:

          Modified code to differetiate them.    



Version 1.67: (driver tg3 v3.77c patch tg3d v0.06)

    1. Problem: (CQ29852)

          5721 - Restorenvram overwrites the settings(configuration area) to NVRAM with -config

       Cause:

          B57ldiag didn't update the size of NVRAM when programming bootcode. 

          The size of bootcode image dumped by FwUpg utility is larger than normal.

          If the over-size bootcode image is restored, some part of NVRAM would be corrupted.

       Fixed:

          Update the size of NVRAM correctly when programming bootcode.



    2. Problem: (CQ30133)

          Linux b57ldiag breaks for verbose -i (invalid memory reference).

       Cause:

          When displaying the name of commands and IO verbose mode is enabled, the point to the

          string of few command is NULL unexpectedly. So, the error "invalid memory reference" 

          occurs.

       Fixed:

          Provide the relevant strings to each command one by one.

Version 1.66a: (driver tg3 v3.77c patch tg3d v0.06)

    1. Enhancement (CQ29557)

          Suppport CableSense feature for 5754M



Version 1.66: (driver tg3 v3.77c patch tg3d v0.06)

    1. Problem:  (CQ29288)

          5906/5906M failed pkttest -e at speed 10/100 (D3 - external loopback)

       Cause:

          Did not apply specific settings for PHY configuration

       Fixed:

          Execute those requested settings for 5709/5706M devices



    2. Problem: (CQ29656)

          5755A2 failed D3 10/100/1000 external loopback test on customer's platform.

       Cause:

          tg3d driver did not handled auto-MDIX correctly.

       Fixed:

          Correct auto-MDIX handling.



    3. Problem: (CQ29564)

          LOM was corrupting NVRAM checksum

       Caused:

          NVRAM detection failure

       Fixed:

          Added logic to get the correct NVRAM type

 

Version 1.65: (driver tg3 v3.75e patch tg3d v0.05) 

    1. Problem:  (CQ29158)

          The command "seprg -f /directory/filename(or ./filename)"

          is not functional.

       Cause:

          Using isalnum() which returns true if its input contains

          aA-zZ and 0-9 only to validate the path of file.

       Fixed:

          Allow the prefix '.' and '/' as valid characters.



    2. Problem:  (CQ29267)

          Install PXE firmware and allow PCI image into PCIe or PCIe

          image into PCI devices.

       cause:

          There was no logic to identify PCI or PCIe devices in

          the eprom_programPXE function. 

       Fixed:

          Add the logic to identify PCI or PCIe devices and fix a logic

          error in bdapiIsPCIE()  



    3. Problem:  (CQ29304)

          Program iscsi firmware into N/A iSCSI devices.

       cause:

          Support parts on Release 9.7 MRD v1.6 only.

       Fixed:

          Based on Release 10.0 MRD v1.0b.doc 9/19/2006, we need support:

          (5714, 5714S, 5715, 5715S, 5721, 5722, 5754, 5754M, 5755M, 

           5756ME, 5755, 5780, 5780S)         



    4. Problem: (CQ29290)

          5751F run and failed at speed 1000 of pkttest -e 

       Cause:

          5751F should not be executed at speed 1000 for pkttest -e

       Fixed:

          Identify 5751F device by device id instead of hardware id.





Version 1.64: (driver tg3 v3.75e patch tg3d v0.05) 

    1. Problem:  (CQ28881, fixed in tg3 v3.75c)

          Failed to indicate on iSCSI Boot Version. Got scramble 

          characters.

       Cause: 

          Driver can not write the NVRAM location with size bigger 

          than 128k.

       Fixed:

          The code reporting the nvram size in the tg3 driver was 

          modified to use the total length of the nvram size when 

          the tpm lock is not enforced. 



    2. Request: (CQ28966)

          Implementing the NVRAM configurability of GPIO0 and GPIO2 for 

          the 5722.

       Fixed:

          Make GPIP0 and GPIO2 configurable for the 5722 LOM device.



    3. Problem: (CQ28291)

         Linux Diag v1.61 for x86-64 and Power PC reports: 

         "Invalid memory reference" after running:  

         1) "seprg -f" 

         2) and then "seprg".

       Cause:

         The error occurs when "GetFilename" in-line macro was called 

         after step 1 and 2. 

       Fixed:

         The issue was resolved by replace the in-line macro with actual

         logic in the seprg command. 

       Impact:

         None.



    4. Enhancement: 

         Added L1 ASPM Debounce Enable Configuration support for 

         Bootcode and HW Selfboot firmware.  The L1 ASPM Debounce Enable 

         bit can be configured via secfg commands.





Version 1.63: (driver tg3 v3.75b patch tg3d v0.05) 

    1. Problem:  (CQ28869, fixed in tg3d patch v0.05)

          b57ldiag v1.62 - pkttest -e failed only on speed 10 w/ 

          SuSE9 "D3. ext loopback"

          ** Error 138 **

          recvfrom() failed (cnt=1): 11 Resource temporarily unavailable

       Cause: 

          The wait loop value for 10M ext loopback  was not long enough

          for link to occur. 

       Fixed:

          Increase wait loop.



    2. Problem: (CQ28872)

          Linux Diag v1.62 for the PPC incorrectly displays the PXE 

          version. For example 36.100.141 is shown instead of v10.4.4

       Cause:

          PPC is big endian system. B57ldiag had a bug to get the PXE

          version offset without convert it to the big endian. As result, 

          the offset was calculated incorrectly and caused the data 

          error.  

       Fixed: 

          Convert the field of version number offset to big-endian.

       Impact:

          None.

 



Version 1.62: (driver tg3 v3.73b patch tg3d v0.03) 

    1. Enhancement: 

          Added 5756ME and 5722 support.

          

    2. Enhancement: (CQ28257)

          Add a checksum byte at NVRAM offset 0x75 for code directory 

          area (0x14-0x73). 

       Fixed:

          Always insert checksum (two's complement )when updating secfg

          information or doing any dirctory change;

          when changing checksum value, the manufacturing CRC needs 

          to be updated also;

          when detecting checksum Error: Adding all bytes from 0x14 to

          0x73 and adding the checksum byte, the result should be zero.

          If it is not zero, then check if the checksum byte (0x75) is

          zero. If the checksum byte is zero, means this is legacy image 

          that does not compute checksum, therefore it is not checksum

          error. Otherwise, it is checksum error.

       Impact:

          None.



    3. Enhancement: (CQ28394) 

          Add GPIO0 and GPIO2 Initial State Configuration in NVRAM Parameter 

          for 5752 LOM device.

          

    4. Enhancement: (CQ28397) 

          Add GPIO0 and GPIO2 Initial State Configuration in NVRAM Parameter 

          for 5656ME LOM device.



    5. Problem: (CQ28291)

         Linux Diag v1.61 for x86-64 and Power PC reports: 

         "Invalid memory reference" after running:  

         1) "seprg -f" 

         2) and then "seprg".

       Cause:

         The error occurs when "GetFilename" in-line macro was called 

         after step 1 and 2. 

       Fixed:

         The issue was resolved by replace the in-line macro with actual

         logic in the seprg command. 

       Impact:

         None.



    6. Known issue: (CQ28604)

          This version of tg3d have problem on kernel 2.4. 

          The suggestion is that do not run b57ldiag v1.62 on kernel 2.4 

          system.  It will be fixed in next release.

     

     

Version 1.61: (driver tg3 v3.66l patch tg3d v0.02)

    1. Problem: (CQ27849)

         Under Linux Diag the command "upgfrm" does not work on 5906 sb 

         non-vpd part, but works under Dos diag.

       Cause:

         upgfrm in previous Linux Diag didn't support 5906 and 5906M.

       Fixed:

         Added code into 'upgfrm' to support HW SB device.

       Impact:

         None. 



    2. Problem:

         "Advancement Fw CFG" get programmed into the NVRAM even there is

         not enough space for the whole UMP.

       Cause:

         Similar to CQ27882. b57ldiag program CFG first, and then check 

         and program the UMP firmware.  That means even insufficient 

         space is reported, CFG still get programmed.

       Fixed:

         Added code to check if there is enough space for whole UMP 

         image before program any piece of UMP firmware.  

       Impact:

         None.         



    3. Problem: (CQ27878)

         MAC loopback failed on 5780. The error message is:

         "** Error 138 **

         recvfrom() failed (cnt=1): 11 Resource temporarily unavailable"

       Cause:

         This is actually a timing problem with the 5780 mac loopback 

         mode. (refer CQ13927)

       Fixed:

         Skip the MAC loopback test on 5780 as DOS diag did.

       Impact:

         None.



    4. Problem: (b57diag CQ28033) 

         Capacitive Coupling can not be set on 5714C. 

         Please refer to CQ27954 for more details. 

       Cause: 

         Previously, only 5705 supports Capacitive Coupling. 

       Fixed: 

         Added code to make Capacitive Coupling configurable on 5714C, 

         5715C, and 5780 since they have the same GPHY 546x core as 

         the 5705. 

       Impact: 

         Capacitive Coupling is enabled on 5714C/5715C/5780.



    5. Enhancement:

         Changed Makefile to use ppc64 compiler and linker 

         if compiling on ppc64 environment.



         

Version 1.59: (driver bcm57diag v9.5.9)

    1. Problem: (CQ27882)

         On RAM size 1MB devices, given that no ASF/IPMI/UMP installed 

         and there is insufficient space to contain the whole ASF/IPMI/UMP 

         component, b57ldiag is able to program a piece of ASF/IPMI/UMP - the 

         "Advanced Fw CFG" - in the NVRAM. Also, b57ldiag actually knows 

         there is insufficient space and prints out the appropriate message 

         on the screen.

       Cause:

         b57ldiag program ASF CFG first, and then check and program 

         the ASF firmware.  That means even insufficient space is reported, 

         ASF CFG still get programmed.

       Fixed:

         Added code to check if there is enough space for whole ASF 

         image before program any piece of ASF firmware.  

       Impact:

         None.



    2. Enhancement: (CQ27940)

         Remove PLL powerdown enable/disable option from the menu.

       Impact:

         None.



    3. Problem: (CQ27996)

         On 5755M, external loopback test ("pkttest -e" or "nictest d3")

         fails at Speed 1000. It passes at Speed 10 and 100.

       Cause:

         This was a 5755M code bug only and was a result of adding the 

         phy trim tab fix in v9.5.8.

       Fixed:

         Moved the phy trim tab code into the reset phy function.

       Impact:

         The fix is specific to the 5755M and will not affect other 

         boards.  No other changes were made.



    

Version 1.58: (driver bcm57diag v9.5.8)

 

    1. Problem: (CQ27669)          

          Running nictest on a specific platform on port 0 results in 

          "NVRAM data error".  Also noticed that WOL values cannot be 

          toggled on this port either.  

       Cause:

          The root cause is that the 5704 LOM device had been set to 'NIC'.  

          5704 LOM device has NVRAM write protection, and the GPIO1 is

          used for this purpose. 

          When a 5704 LOM device was set to 'NIC', write protection was 

          not disabled. so write NVRAM failed on port0.          

       Fixed:

          Extra code is added to disable the Write protection on both ports 

          before NVRAM write operation.

       Impact:

          None.          



    2. Enhancement: (CQ27832, done by bcm57diag)          

          Modified 5755M PHY settings to improve performance.

          IEEE amplitude & return loss are marginal / failing on some 

          notebook systems.

       Cause:

          This system has an external E-switch that impacts IEEE 

          performance.

       Fixed:

          On a particular OEM's system, the external resistor value causes 

          necessity to change the PHY Trim Tab values so the 5755M device can 

          pass IEEE compliant test.  This change is only applied to 5755M 

          device.  For any future 5755M design, the A.E. agreed to make

          modification to the external logic so that the system can pass 

          IEEE test using this set of Trim Tab value.

       Impact:

          5755M PHY Trim Tab values after reset.



    3. Enhancement: (bcm57diag) 

          Increased wait loop for 5906 VCPU init done after reset

       Cause:

          The 5906 VCPU INIT_DONE bit gets asserted high approximately 

          ~7ms after a GRC reset. Yet the bcm57diag was only waiting 

          ~5ms. the change was needed to prevent a potential problem.

       Fixed:

          The max wait loop for the INIT_DONE bit to assert was 

          increased from ~5ms to ~20ms until it times out and returns failure. 

       Impact: 

          only 5906 with bcm57diag v9.5.7 and greater.





Version 1.57: (driver bcm57diag v9.5.6)

 

    1. Problem: (CQ27658)          

          5906 LED Mode is inconsistent with what is indicated by DOS diag. 

       Cause:

          The Linux LED mode definition is different from the DOS.

       Fixed:

          Correct the LED mode definition.

       Impact:

          5906 LED configuration.

          

    2. Problem: (CQ27721)

          The "ifconfig ethX down" commands that must occur before 

          removing the tg3 driver and inserting the bcm57diag driver 

          are failing.  When the rundiag script attempts to insert 

          the bcm57diag modules, it fails indicating that there are

          no devices found.

       Cause:

          Previous runDiag script did not bring down the interface 

          if the tg3, bcm5700, or tg4 driver is installed.  

       Fix:

          Bring down the interface if the system kernel is 2.4, and the 

          driver is tg3, tg4, bcm5700, and/or bcm57diag.

       Impact:

          None.

          

    3. Problem: (CQ27669)

          NVRAM test fails on port 0 of customer system using b57ldiag.

       Cause  : 

          A race condition exists between the bcm57diag driver and asf 

          firmware when writing the keep alive message in the fw event

          register resulting in lost keep alive messages causing the 

          fw to reset the hw.    

          Refer to CQ26395.

       Fix: 

          In bcm57diag v9.5.6. Use a recently defined keep alive message where

          the fw keeps track of multiple conditions before reseting the hw. 

       Impact: 

          none.





     

Version 1.56:  (driver bcm57diag v9.5.5)

 

    1. Problem: (CQ27557)

          Accessing second 5704 port on customer system results in 

          "Invalid serial NVRAM format".

       Cause:

          Linux system bring down the network interface if the  

          configuration is DHCP and there is no link, in this 

          case, B57ldiag can not access the NVRAM correctly.

       Fixed:

          Check and Bring up the network interface when a new command is 

          issued.  Now, even the interface config is dhcp and no link, 

          the b57ldiag still can access the NIC card.

          Without this fix, changing interface boot protocol to 'none' 

          is recommended.

       Impact:

          Minor overhead is added since b57ldiag checks the interface status

          before execute a command.

 

    2. Problem: (CQ27660)  

          Secfg options (ie: CLKREQ) are missing or inconsistent with

          what is displayed in DOS diag for 5906.

       Cause:

          Linux secfg for 5906 has not been updated to the latest 

          secfg requirement.          

       Fixed:

          Changed the code to have same 'secfg' as DOS Diag for HWSB 

          device. 

       Impact:

          5906 secfg options is changed to as same as DOS diag.

 

    3. Problem: (CQ27658)  

          The value shown in b57ldiag on 5787m  for "VPD Data" is 

          inconsistent with what is indicated by DOS diag.

       Cause:

          Linux secfg for 5787m has not been updated to the latest 

          secfg requirement.  

       Fixed:

          Changed the code to have same 'secfg' as DOS Diag for Selfboot 

          device.

       Impact:

          secfg options for Selfboot device are same as DOS diag.

 

    4. Enhancement:

          Changed the code to have same 'secfg' as DOS Diag for regular 

          boot device. 

          

    5. Problem: (CQ27686)

          External Loopback Test ("nictest d3" or "pkttest -e") fails 

          on DUTs 5906(A1 or A2) and 5906M(A2), with the error message:

          ** Error 33 **

          No good link! Check Loopback plug.

       Cause:

          Previous b57ldiag does not support 5906M external loopback.

       Fixed:

          Added code to set related PHY registers and adjust timing to make

          5906 datatest pass.

       Impact:

          Impact only apply to 5906 external loopback since it require extra

          PHY register setting.



          

Version 1.55:  (driver bcm57diag v9.5.5)



    1. Problem: 

          Referenced tg3d in readme.txt for release 1.52 to 1.54.

       Cause:

          Forgot to update readme.txt.

       Fix:

          Updated readme.txt.



    2. Enhancement: 

          Removed the PLL Powerdown option from the "secfg" command

          because this feature is no longer supported.





Version 1.54:  (driver bcm57diag v9.5.5)



    1. Enhancement: (bcm57diag)

          Modified code to avoid intermittent loopback test failures

          seen on a number of kernel versions.



    2. Enhancement: 

          Modified code to check for link status via ethtools and not

          probe the PHY directly.





Version 1.53:  (driver bcm57diag v9.5.4)



    1. Problem: 

          Will not support 5756ME & 5722 for release 10.0.

       Cause:

          Testing for the above chips is not complete.

       Fix:

          Removed support for the above chips.







Version 1.52:  (driver bcm57diag v9.5.4)



    1. Enhancement: (bcm57diag)

          Switched to the bcm57diag driver for the 10.0 release.

          Will switch back to the tg3d after the 10.0 release.

          Improved 5906 support in the bcm57diag driver.



    2. Problem: (CQ27378) 

          Destroy state information needed by firmware at memory 

          location 0xb50-0xf4f. 

       Cause: 

          During memory testing the memory contents at 0xb50-0xf4f 

          is overwritten.

       Fixed: 

          Modified code to read and save the memory content at 

          0xb50-0xf4f before the memory test and then restore the 

          content after the memory test.



    3. Problem: (CQ27382) 

          Diagnostic fails when the interface is brought down during

          a diagnostic run. 

       Cause: 

          In this case, while diagnostic was running, the dhcp client 

          brought down the interface when it failed to get a dhcp 

          address.

       Fixed: 

          Documented in the readme.txt that the user is responsible 

          for the state of the interface during the diagnostic run.

          The runDiag script, the diagnostic program and the driver

          will not be modified to force the driver to stay up during

          the diagnostic run. 





Version 1.51:  (driver tg3 v3.66l patch tg3d v0.01)



    1. Enhancement: (tg3d)

          Patch file updated. Release notes at end of readme.tg3d.



    2. Enhancement: 

          Modified diagnostic not to run the loopback test at 1000 Mbit on

          parts that only support 10/100 Mbits.



    3. Enhancement: 

          Enhanced diver version checking to recognize the new tg3d driver.



    4. Enhancement: 

          Simplify the distribution directory structure and updated the

          documentation to reflect this.



    5. Enhancement: 

          Updated the runDiag script:

          1 - to work with the new directory structure

          2 - allow for repetitive diagnostic runs without re-makeing

              the driver on each run (use the -n option not to re-make)

          3 - handle the auto insmod-ing of the tg3 driver better by

              minimizing the time between "rmmod tg3; insmod tg3d"





Version 1.50:  (driver tg3 v3.66l patch tg4 v0.00)



    1. Enhancement: 

          Going forward the bcm57diag driver is going to be replaced by a

          patched version of the tg3 driver. The user can use the runDiag

          script to automatically load the driver and run diagnostic. The 

          user can also do this process manually by following the diagnostic 

          readme.txt and the readme.tg4 file in the driver directory.



    2. Enhancement: 

          Based on request from a specific OEM customer, this 

          version adds logic to read configurable option from the NvRAM 

          for allow/disallow PLL power down feature. User can use "secfg" 

          and configure "Allow PLL Powerdown {Disable(0), Enable(1)}". 

       Impact: 

          The option of "Allow PLL powerdown" only can be displayed and 

          configured on the device 5787M.



    3. Enhancement: (Applied the fix for DOS CQ27111 into Linux) 

          Customer requests that the 5755M GPIO0 init state to be 

          configurable. 

       Fixed: 

          Change B57diag "secfg" to make 5755M GPIO0 and GPIO2 configurable. 

          (input/output, 0/1 value in output mode). 

          This information is stored in NVRAM (manufacturing 

          information, offset DC).  Also, a boot code change request is in 

          the works to change the behavior to not drive GPIO0 low. 

       Impact: 

          This change only applies to 5755M LOM device.



    4. Enhancement: 

          In the "secfg" command added the Cable Sense option 

          (enable/disable) for the 5752M/5755M/5787M/5787FM chips.



    5. Enhancement: (CQ27328)   

          Added CLI "mread" to read PHY register. Implementing "mread" 

          complete PHY read / write control under b57ldiag.

          



Version 1.49:  (driver bcm57diag v9.5.2)



    Problem: (CQ27208) 

       5787F does not support ASF, but B57Diag 10.04 allowed the   

       firmware to be loaded into NVRAM. 

    Cause: 

       Previous version didn't filter out the 5787F. 

    Fixed: 

       Added a new filter to check if the iamge is a ASF or IPMI 

       firmware, then check if the device support ASF or IPMI. 

       Based on the 10.0 MRD v1.0b, 5702, 5705, 5782, 5751, 5753, 

       5752, 5754, 5755, 5756ME, 5787 should support ASF, whilet 5704, 

       5714, 5715, 5780, 5721, and 5722 should support IPMI.



    Problem: (CQ# 26740)

       The loopback tests (nictest d1, d2, d3) intermittently fail.

    Cause:

       Do not wait long enough for the link to stabilize before

       transmitting packets.

    Fix:

       Added a delay between setting the loopback mode and then

       transmitting the packets.



   Enhancement:

      Enhanced diver version checking so version 9.0.0 or newer of 

      the bcm57diag driver is required for a number of tests and also 

      enhanced version checking so that it will eventually be easier 

      to support a patched version of the tg3 driver.



   Enhancement: (driver)

      Modified the driver to compile on new kernels.

      No functional changes from the diagnostic point of view.





Version 1.48:  (driver bcm57diag v9.5.2)



    Problem: (CQ27120)

       Attempting to enable IPMI on both ports of the 5704c with "secfg"

       option 24 gives the following error: 

       "Secondary device asf if already enabled. 

       Disable that device and enable this?"

    Cause:

       5704 has two port. ASF only can be enabled on one port while 

       IPMI can be enabled on both port.

    Fixed:

       Check if the IPMI or ASf code has been loaded. If IPMI code is 

       loaded, 'enable bit' can be set on both port.  If ASF code is loaded,

       'enable bit' can only be set on one port.



    Problem: (CQ# 23014)

       Configuration register test (nictest a4) fails on a PPC system.

    Cause:

       On a PPC system registers 0x9c, 0xa4 & 0xac are byte swapped.

    Fix:

       Fixed software to handle the byte swapping on those registers.



    Problem: (CQ# 27004)

       Mac Loopback test (nictest d1) hangs on a PPC system.

    Cause:

       The failing kernel defaulted to a blocking read while previous 

       kernels defaulted to a non-blocking read. The diagnostic code 

       is designed for an non-blocking read.

    Fix:

       Modified the code to set up the read as non-blocking independent

       of the kernel default.



    Enhancement: (CQ# 27015)

      Implemented the equivalent of the DOS diagnostic "mwrite" command.





Version 1.47: (driver bcm57diag v9.5.2)

      

    Problem: (CQ# 27051)

      The "sechk" command fails on a 5906 device.

    Cause:

      Code for 5906 "sechk" not called correctly.

    Fix:

      Code for 5906 "sechk" called correctly.



    Problem: (CQ# 27054)

      The "secomp" command fails on the 5906 device.

    Cause:

      The incorrect NVRAM size is used during the "secomp"

      operation for the 5906 device.

    Fix:

      Use the correct NVRAM size for the 5906 devices during "secomp".



    Problem: (CQ# 27093)

      The "setwol" command fails on the 5906 device.

    Cause:

      Code for 5906 "setwol" was not present.

    Fix:

      Added code for 5906 "setwol".



    Problem: (CQ# 27055)

      A 5906M device is identified as a 5906.

    Cause:

      Code for differentiating 5906 and 5906M not present.

    Fix:

      Added code to differentiate the 5906 and 5906M.





Version 1.46: (driver bcm57diag v9.5.2)

      

    Problem: (CQ# 26647)

      Does not prompt the user to erase NVRAM UMP firmware when 

      replacing the UMP firmware with the IPMI firmware.

    Cause:

      Code not coded for IPMI firmware replacing UMP firmware.

    Fix:

      Update code to handle IPMI replacing UMP firmware.



    Problem: (CQ# 26884)

      The "secomp" command fails on self-boot devices.

    Cause:

      The incorrect NVRAM size is used during the "secomp"

      operation for self-boot devices.

    Fix:

      Use the correct NVRAM size for self-boot devices during "secomp".



    Problem: (CQ# 26924)

      The "seprg" command corrupts the self-boot NVRAM image when

      the firmware sized is larger than the NVRAM size.

    Cause:

      When programming the self-boot NVRAM firmware, the size of the

      NVRAM is not checked to verify it is large enough for the firmware.

    Fix:

      Fail the "seprg" command if the self-boot firmware is larger than 

      the NVRAM size.



Version 1.45: (driver bcm57diag v9.5.2)

      

    Enhancement: 

      As of release 1.45 the Broadcom NetXtreme diagnostic and

      driver will be packaged as a single compressed tar file.

      This is done to, achieve consistency with the distribution 

      method used by other Broadcom Ethernet software products, 

      to ease internal distribution and testing, and to maintain 

      batch file attributes.

      The package version number and diagnostic version will be

      the same and incremented with every release. The diagnostic

      driver version number will only be updated when the driver

      is updated.



    Problem: (CQ# 26874)

      A segmentation fault is produced when a 64 bit version of 

      diagnostic is run on a 32 bit kernel. The same happens when

      running a 32 bit diagnostic on a 64 bit kernel.

    Cause:

      Compiling the diagnostic executable on a newer distribution

      then running them on an older one produces this problem.

    Fix:

      Will compile the release diagnostic with older distributions.



    Problem: (CQ# 26875)

      Can not start the 64 bit diagnostic on a 64 bit kernel.

    Cause:

      Pilot error: released a 32 bit compile as a 64 bit diagnostic.

    Fix:

      Release 64 bit compile as a 64 bit diagnostic.



    Problem: (CQ# 26926)

      Can not program ASF or IPMI on the 5722 and 5756ME.

    Cause:

      Incorrect image file identification for the 5722 and 5756ME.

    Fix:

      Corrected image file identification for the 5722 and 5756ME.



    Problem: (CQ# 26930)

      Incorrectly identify the 5722 and 5756ME C0 as A0.

    Cause:

      The 5722 and 5756ME in-chip revision format is different

      than all previous chips.

    Fix:

      Modified code to identify the 5722 and 5756ME based on the 

      new in-chip revision format.



Version 1.44:

      

    Enhancement: 

      Added support for 5756ME, 5722 & 5906 to perform testing for 

      the 10.0 release.



Version 1.43:

      

    Enhancement: (CQ 26583)

      Enhanced the "iscsiprg" NVRAM clean up process, when the 

      NVRAM programming fails. 



Version 1.42:

      

    Enhancement: (CQ# 26508)

      Added iSCSI support (program via "iscsiprg").



Version 1.41:

      

    Problem: 

      Will not support 5756ME, 5722 & 5906 for release 9.7.

    Cause:

      Limited testing has been performed on above chips.

    Fix:

      Removed support for above chips for release 9.7.



    Enhancement:

      Improved 5755 memory testing.



Version 1.40:

      

    Enhancement:

      Initial 5756ME and 5722 support added.

      Needs driver version 9.5.2 or newer.



    Problem: (CQ# 26360 & 26400)

      Can not program a 5705 bootcode or other images.

    Cause:

      Bug introduced by fix for CQ# 25136 in Version 1.38.

      The bug incorrectly sizes the NVRAM for 5705 devices.

    Fix:

      Modified diagnostic code to correctly size the NVRAM.



    Problem: (CQ# 26358)

      Incorrectly identify a 5705F as a 5705.

    Cause:

      No code existed to identify the 5705F.

    Fix:

      Added code to identify the 5705F.



    Problem: (CQ# 26359)

      Can not use the "sedump" command to generate the NVRAM image

      on a 5787 selfboot device. The dumped NVRAM image fails "seprg".

    Cause:

      Incorrect file write routine called in code during "sedump".

    Fix:

      Modified code to use the correct file write routine.



Version 1.39:

      

    Enhancement:

      Initial 5906 support added.

      Loopback tests (d1-3) need driver version 9.5.2 or newer.



Version 1.38:



    Problem: (CQ# 25727)

      System hangs when diagnostic is run with an unsupported Broadcom

      Ethernet adapter.

    Cause:

      Diagnostics does not support Broadcom 5700-03 adapters and was

      accessing them in a way that would hang the system.

    Fix:

      Diagnostics now does not access 5700-03 adapters. 



    Problem: (CQ# 25136)

      The "device" command displays incorrect NVRAM information.

    Cause:

      Incorrect NVRAM information is provided by the driver which

      is then displayed by diagnostics.

    Fix:

      The diagnostic now does not use the driver NVRAM information 

      but determines the information it self. 

      

    Problem: (CQ# 25728 & 25815)

      A warning message is incorrectly printed when using the "seprg"

      command to update the bootcode.

    Cause:

      The code that checked for device and image consistency was 

      incorrect.

    Fix:

      Updated the code that checks for device and image consistency. 

      

    Enhancement:

      Added the "semode" command that displays NVRAM information.

      

Version 1.37:



    Problem: (CQ# 24607)

      The "asf" command causes diagnostic to lockup.

    Cause:

      A bug in the code does not terminate asf testing when the

      necessary asf files are not present in the diagnostic directory.

    Fix:

      Do not execute the asf test and notify the user that the asf

      files necessary for testing are missing. 



Version 1.36:



    Enhancement:

      Replaced the ioctl NICE_CMD_REG_READ with NICE_CMD_REG_READ2.

      An issue caused by AsfIPmon forced a driver change that required

      this change (details are in the release notes of the driver).

      Driver v9.4.5 or newer is required for this diagnostic to run.



Version 1.35:



    Enhancement:

      The 32 bit compile of diagnostic will not run with the 64 bit

      compile of the driver and will prompt the user to use the 64

      bit compile of the diagnostics, for x86_64.



Version 1.34:



    Enhancement:

      Added 5787-lite support.



    Enhancement:

      Linked new executables with the -static option.

      Executables withOUT the -static option (old way) have their

      names post-pended with _d (i.e. b57ldiagi_d, b57ldiagi64_d

      and b57ldiagp_d).

      If there are no issues using the executables created with the

      -static option then eventually the files post-pended with the

      _d option will not be created or distributed.



Version 1.33:



    Problem: (CQ# 23932)

      NVRAM corruption during bootcode and PXE upgrade.

    Cause:

      When firmware is running NVRAM can be corrupted when 

      diagnostic upgrades the content of NVRAM.

    Fix:

      Disable any firmware from running when updating NVRAM. 



Version 1.32:



    Problem: (CQ# 23717)

      Can not program the latest version of UMP firmware.

    Cause:

      When porting DOS UMP code did not remove an extraneous check.

    Fix:

      Removed DOS UMP checking code that is unnecessary in Linux.



    Problem: (CQ# 23770)

      The "setwol" command does not work on selfboot 5787 devices.

    Cause:

      Coding of selfboot is still in progress and this function

      was not complete yet.

    Fix:

      Coded selfboot "setwol" command.



    Problem: (CQ# 23800)

      ASF Option "Send Ready SMBUS Msg" not available.

    Cause:

      The option was new in DOS diagnostic and was not ported to Linux.

    Fix:

      Ported "Send Ready SMBUS Msg" option.



Version 1.31:



    Problem: (CQ# 23724 & 23802)

      The VPD checksum stored in NVRAM was incorrect according to the

      PCI 2.3 specification.

    Cause:

      Code bug.

    Fix:

      Updated the VPD checksum calculation algorithm to be correct.

    Impact:

      The present version of diagnostic will accept both types of 

      checksums in order to be backward compatible. 

      All new checksums stored in NVRAM will be PCI 2.3 compliant.

      This issue showed up because as of release v9.05 of DOS diagnostic 

      the new checksum method is being used, so any device programmed 

      with v9.05 of DOS diagnostic or newer will be seen as having a

      checksum error with Linux diagnostic versions older than 1.31.



Version 1.30:



    Problem: (CQ# 23702)

      Diagnostic incorrectly flags a device/image-file mismatch when

      programming bootcode to NVRAM.

    Cause:

      The routines for identifying new devices and image files had 

      bugs the caused the incorrect identification.

    Fix:

      Updated the device and image file identification routines.



Version 1.29:



    Enhancement:

      Updated the readme.txt with more details.

      No code changes except for version number 1.29.



    Enhancement:

      Updated the cpu05.bin file, with the version used by DOS

      diagnostics, which has better support for the 5752.



Version 1.28:



    Problem: (CQ# 23011)

      Intermittently unable to program the PT code to the NVRAM.

    Cause:

      When PT code is running a resource conflict occurs with 

      diagnostics and access to the NVRAM is corrupted.

    Fix:

      Disable PT code from running before programming NVRAM. 

      The same modification was also made for UMP programming.



Version 1.27:



    Enhancement: (CQ# 23266)

      Enhanced the "seprg" command to handle UMP programming.



    Enhancement: (CQ# 23269)

      Added the "setump" command for UMP enable/disable.





    Enhancement:

      Preliminary support for 5787 selfboot NVRAM images added.



Version 1.26:



    Enhancement:

      Preliminary support for 5754/5787 added.

      Use the new Linux driver based of v8.3.17 of bcm5700.

      The new driver is bcm57diag v9.0.0.

      Eventually bcm5700 will be replaced by bcm57diag.

      Also bcm57diag will be stripped down and optimized for

      diagnostics and will not be a full/functional network driver.

      The release directory for bcm57diag is b57linuxDiagDrvr.

      For the v9.0.0 release of bcm57diag most of the files in the

      release directory are the same as v8.3.17 of bcm5700 but these

      files will be updated over the next few releases.

      

Version 1.25:



    Enhancement: (CQ# 14483)

      Enhanced the "-l0" option of the "sedump" command so that

      all data from NVRAM is copied to the file specified (original

      only boot code was copied to the file specified).



Version 1.24:



    Problem: (CQ# 14483)

      Unable to program IPMI firmware on a PPC with a 5704.

    Cause:

      A Byte swapping bug introduced in v1.22 makes an invalid 

      memory reference when checking for IPMI in NVRAM.

    Fix:

      Fixed byte swapping bug. 



    Problem: (CQ# 14364)

      Once "nictest" is run on a 5752 subsequent runs, run slow.

    Cause:

      During "nictest" the memory test destroys the bootcode stored

      in memory. This causes the driver to run slow after a reset

      because the driver takes time to time-out when waiting for the

      bootcode handshaking which does not happen with corrupt bootcode.

      This only happens when the 5752 operates in the default fast boot

      mode where after the reset the boot code is run from the chip 

      memory. In "slow" boot mode the boot code is re-loaded from NVRAM

      to chip memory before it is executed.

    Fix:

      Force the 5752 to "slow" boot when the memory is tested. 



ersion 1.23:



    Problem: (CQ# 14292)

      The "seprg -a" failed on a 5752A2.

    Cause:

      The "seprg -a" algorithm misidentified the 5752 as a 5705.

    Fix:

      Fixed the incorrect identification specified above.



Version 1.22:



    Problem: (CQ# 13692)

      The "seprg -a" command printed out incorrect version information.

    Cause:

      The algorithm for calculating the present version in the NVRAM

      was incorrect.

    Fix:

      Corrected the algorithm that calculates the present version.



Version 1.21:



    Problem: (CQ# 14003)

      In "asfcfg" option 12 "Getway IP" is incorrect.

    Cause:

      Typo.

    Fix:

      Replaced "Getway" with "Gateway".



    Problem: (CQ# 13886)

      The "secfg" command on a PPC system causes a crash.

    Cause:

      There was an invalid memory reference in the code.

    Fix:

      Modified code not to make the invalid memory reference.



Version 1.20:



    Problem: (CQ# 13187)

      The "secfg" option 21 selection 3 and 4 were swapped.

    Cause:

      Code error swapped selection 3 and 4.

    Fix:

      Fixed "secfg" code error and made some text modifications.



    Problem:

      The "sedump" command incorrectly truncated the bootcode 

      image when the "-l" option was used.

    Cause:

      Code error incorrectly sizes the bootcode.

    Fix:

      Fixed bootcode sizing function error.

    Impact:

      This fix is a temporary fix because eventually the "-l" option

      functionality will be modified so that it is consistent with

      the DOS diagnostics version. In DOS the "-l" option dumps the

      complete NVRAM contents not just the bootcode.



    Enhancement:

      Improved the "sechksum" function for 575x device family.



Version 1.19:



    Problem: (CQ# 13187)

      Some "secfg" text (display only) fields had errors.

    Cause:

      Typos.

    Fix:

      Fixed "secfg" typos and made some text modifications to ease

      automated parsing of the text.



    Problem: (CQ# 13431)

      An error in the driver caused diagnostic to hang with the 5714

      fiber card.

    Cause:

      Diagnostics waited for the driver to return, which it never did.

    Fix:

      Modified the code so that diagnostic will time out and print

      an error even if the driver hangs.

    Impact:

      The Linux driver v8.2.13 or newer is required for testing the

      5714 family of chips.



    Problem: (CQ# 13482)

      The "secfg" mac mode options does not work for 5704 and 5714.

    Cause:

      The mac mode configuration was not being stored in two NVRAM

      locations as required by boot code for proper operation.

    Fix:

      Modified the code to store the mac mode information in the two

      NVRAM locations required by boot code.



Version 1.18:



    Problem: (CQ# 13269)

      Could not enter two smbus addresses in "secfg".

    Cause:

      Original release of diagnostic did not support dual smbus 

      addresses.

    Fix:

      Modified code accept two smbus addresses via "secfg".



Version 1.17:



    Problem:

      Incorrectly identifies the Shasta and 5705 family of devices as

      a 5752.

    Cause:

      The above bug was introduced in v1.16 by a coding typo.

    Fix:

      Fixed the coding typo to eliminate the incorrect identification.



    Problem: (CQ# 13254)

      Could not enable IPMI on two ports.

    Cause:

      Code was written intentionally to limit the enabling of IPMI

      on two ports

    Fix:

      Allow IPMI to be enabled on two ports by removing the limitation 

      stated above, from the code.



    Enhancement: (CQ# 13218)

      Removed the ASF enable/disable display from the "asfcfg" menu to

      make it consistent with the DOS diagnostics.



    Enhancement: (CQ# 13219)

      Added the "setipmi" command to enable IPMI operation.

      

Version 1.16:



    Enhancement: (CQ# 13187)

      Text changes to "secfg" to ease automated parsing.



    Enhancement: (CQ# 13243 & 13244)

      Improved 5714/5705 chip family support.

      

    Enhancement:

      Improved firmware string display of the "device" command on

      Power PC systems.

      

    Problem: (CQ# 12867)

      The boot code was incorrectly programmed to a 5751 board with a

      SaiFun flash device.

    Cause:

      Diagnostic assumed that all device have a flash paging structure

      of the ATMEL device which is not the case for Saifun.

    Fix:

      For ATMEL flash devices convert the logical address to a physical

      addresses and for the SaiFun or ST part no conversion is required.

      

    Problem: (CQ# 13221)

      Could not program a 5714 SERDES device with IPMI firmware.

    Cause:

      Incorrectly identifying the SERDES device as a copper devices.

    Fix:

      Correctly differentiated between 5714 SERDES/copper devices.

      

Version 1.15:



    Enhancement:

      Added ASF programming support for 5705/51/21/52/53/14.



    Enhancement:

      Minor text changes to "secfg" to ease automated parsing.



    Enhancement:

      Fixed text display issues seen with the "dir" command.



Version 1.14:



    Enhancement:

      Added support for 5705/51/21/52/53/14 (alpha stage).



    Problem:

      The "MBUF SRAM via DMA" test fails on Fedora Core 2 & 3.

    Cause:

      The mechanism used to access physics memory has changed 

      for FC2&3 (kernel change).

    Fix:

      This test is removed until a work around is operational.

      For test coverage removing this test is not an issue

      because the MBUF SRAM is tested by "nictest b3" and indirectly

      via "nictest d1/2/3". The DMA is tested in "nictest d1/2/3".



Version 1.13:



    Problem: (CQ# 10980)

      On SOME PPC systems diagnostic failed the DMA test after

      multiple iterations.

    Cause:

      Never received a failing system and could not debug.

      The fix noted in the "Fix:" point below was sent to the 

      customer and was reported to solve the problem.

    Fix:

      Increased the wait time for the DMA test to complete.



Version 1.12:



    Problem:

      On PPC systems diagnostic would hang after running many hours.

    Cause:

      A timer routine did not account for one rollover condition.

    Fix:

      Added code to account for the missing rollover condition.



Version 1.11:



    Enhancement:

      Added the driver returned error number to the end of the 

      "Driver returned error status" message.



Version 1.10:



    Problem:

      On PPC systems the loopback test fails (i.e. nictest d1).

    Cause:

      The setsockopt() PPC call does not complete due to compatibly issues.

    Fix:

      Remove the above call. Nictest d1 will work without it.



Version 1.09:



  1. Fixed failure of "MBUF SRAM via DMA" test on the PPC system.

  

    Problem (CQ# 9876):

      When the "MBUF SRAM via DMA" test is run it fails (test B5).

      

    Cause:

      On the new PPC system the compile environment changed.

      Diagnostic use of u64 is problematic under the new compile

      environment.

    Fix:

      The code was modified to work with u32 instead of u64.



Version 1.08:



  1. Added a new verify option to the "seprg" command.

  

    Problem:

      Command "seprg" can cause diagnostics to crash (CQ9411)

      Command "seprg" accepts firmware files with bad CRCs (CQ9412).

      

    Cause:

      When "seprg" is used to program the flash the from a file the 

      validity of the file is not checked.

      

    Fix:

      Added the -v option to the "seprg" command.

      The -v option verifies the contents of the file being used.

      

   

  2. Support new ASF file format.

  

    Enhancement:

      ASF code is now released as a single binary image.

      Modified diagnostics so it can program the NVRAM with the 

      ASF images using the "seprg -a -f<filename>" command.



Version 1.07: 



  1. Make filename not case sensitive

  

    Problem:

      For formal ASF code releases, the filename was in upper case

      where some of the engineering releases are in lower case.

      This made the operation very inconvinient. 

      

    Cause:

      The ASF code generating utility does unify the filename to

      either upper case or lower case.

      

    Fix:

      Changed the code find the name in 3 steps.

      

      1. Search for the file with giving name as it. This allows

         upper and lower case mixed filenames.

      2. If not found, then convert all letters to lower case.

      3. If not found, then convert all letters to upper case.

      

      If the file cannot be found at this point, it will give up

      the search.

   

Version 1.06:



  1. Fixed DMA overnight SRAM testing failure

  

    Problem:

       After running overnight, from time to time DMA SRAM test 

       was failing.

    

    Cause:

       It was racing between DMA speed and CPU speed. It does not

       happen often, but, once a while, CPU will go and check data

       before DMA complete transfer the whole block.

       

    Fix:

       Put 1 millisecond delay before checking data to allow the DMA

       to complete.     



Version 1.05:



  1. ASF configuration format changed from format 5 to format 6.

   

     Problem:

       The ASF code has been changed to configuration format 6. 

     

     Cause:

       Since b57ldiag asf code is shared with ASF code, after the ASF code

       update, now b57ldiag is using configuration format 6.

       

  2. Fixed Memory test intermittent failure problem

  

     Problem:

       Running test B in loop, intermittently the test would fail.

       

     Cause:

       We had a known chip errata that when doing indirect access to memory

       or registers, the address write does not completes correctly. To

       workaround this, we need to perform an extra read right after the address

       write. 

     

     Fix:

       Added the code to read back the address right after the address write.

       

  3. Restored test group B and A3

  

    Problem:

      Test group B and A3 was temporary removed in Version 1.04

      

    Cause:                  

      We needed an immediate stable version release; thus we had to disable

      test A3 and group B for the previous version.

    

    Fix:

      Restored the tests

      

Version 1.04: 



  1. Added suspend feature upon error for debugging

  

    Problem:

      When test fails, after aborting the test, the driver is 

      resumed and everything back to running. In this case, 

      All debugging information has been lost.

    

    Cause:

      After resume driver, driver will issue reset to the device

      which will reinitialize everything. This will wipe out all

      information about the test failure. 

      

    Fix:

      Added one more option "suspend" upon detecting error. With

      this option, b57ldiag will not resume driver and left driver

      state as suspended.

      

    Note:

      After user select this option, a command "resume" must be

      issued before the port can be back to operational state. 

      

   2. Removed A3 and Group B tests

   

    Problem:

      The test was intermittently failing in version 1.03. We needed

      a stable version in version 1.04. 

      

    Change:

      The test is temporary disabled in this version. Those tests will

      be enabled back in version 1.05.

      

Version 1.03: 



  1. Removed phy_id configuration from NVRAM

  

    Problem:

      Phy_id is not a valid configuration. Should not allow user

      to configure it.

      

    Cause: 

      Order version of configuration had this field; however the

      phy_id is now no longer a configuration field. The id is

      read directly from phy register.

      

    Fix:

      Removed option 24 in secfg.

      

  2. Fixed secfg command problem

   

     Problem: 

       Cannot get into secfg command

       

     Cause: 

       Bootstrap CRC checksum was in little endian format. It needed to be

       converted for comparison.

       

     Fix:

       swapped bootstrap CRC from little endian to big endian.    

       

  3. Checks for valid bootcode for command dir, semap, sechksum,

   

     Problem:

       When bootcode image was invalid, it will behave incorrectly.

       

     Cause:

       Since the bootcode code offset and directory was invalid. The length

       and offset calculation was unpredictable. As result, it may get invalid

       length for memory allocation.

       

     Fix:

       Added image validation check before executing the command. If it is

       invalid, it aborts the command. 

       

  4. Added valid bootcode image check for sedump command.

  

    Problem:

      When bootcode image is invalid, it gets incorrect size for dumping.

      

    Cause:

      When user did not specify the length to dump, the program was trying

      to determine the bootcode length (default) to dump by looking at the boot

      strap and directory. Since the bootcode image was invalid, it get invalid

      length. After the computation, it get negative length if the length field

      was 0xffffffff. As result, it could not allocation memory and cause failure.

      

    Fix:

      When user did not specify the length to dump and the bootcode was invalid,

      force dump length to be 0x2000 (as default) for the size to dump. 

      In addition, it turns off physical-logical translation since the offset is

      invalid. If user wants to use secomp command to compare the content, -a

      option will be needed in secomp command to turn off the address translation

      also.

      

  5. Display firmware version for CPU test

  

    Problem:

      When running CPU test, user cannot tell what version of firmware it was

      testing with. 

      

    Cause:

      Code does not display the version number and order firmware does not have

      version string also. 

      

    Fix:

      Updated firmware to contain version string and modified the program to

      display the version string when testing.

      

    Side effect:

      This function will work only if newer firmware is used. 



version 1.02: 



  1. Added new error codes for CPU Test

  

    Problem:

      When CPU test (test C2) fails it displays "CPU test failed" only.

      It would help if it displayed more information about how it failed.

      This is also true for DOS version of b57diag.

      

    Enhancement:

      1. Changed cpu.bin/cpu05.bin to encode the error

      2. Changed b57ldiag to decode the error message to text format.

      

    New possible error messages:

      1. CPU failed on %s bit access to address %08X

      2. CPU failed on memory pattern %08X at address %08X

      3. CPU Instruction test failed

    

    This requires new cpu.bin/cpu05.bin firmware released in version 

    1.02 or later. 

    

  2. Fixed secomp failure on offset 0x10 

  

    Problem:

      When using secomp command to compare the NVRAM data against file, 

      offset 0x10 was always incorrect. This problem was only seen in 

      PPC, RedHat (i86 systems) was okay. 

   

    Cause:   

      When reading bootcode image from NVRAM, the bootstrap checksum is 

      reversed in PPC. The CRC was stored in little-endian format. It 

      needed to be converted to big-endian before comparison.

      

    Fix:

      Converted checksum to big-endian format.

      

  3. Fixed secomp failure on offset 0x100

  

    Problem:

      When program bootcode image with seprg with restoring serial number,

      Offset 0x100 data will be corrupted. 

      

    Cause:

      The bug was in seprg command. When programming bootcode and try to 

      restore the serial number in VPD data. The vpd data needed to be 

      re-organized due to the serial number restoration. Offset 0x101-0x102 

      is the region length 16 bit field. In PPC, the field needed to be 

      converted to big-endian. There was a bug using 32 bit conversion to 

      convert 16 bit data. As result, the length as stored as zero and 

      caused the data corruption. 

      

    Fix:

      Changed the 32 bit conversion to 16 bit conversion.   

      

  4. Added new option -m and -v for secomp command

  

    Problem:

      When Mac address or serial number was preserved while using command

      seprg, the comparison will fail on mac address, manufacturing block

      checksum, and vpd data.

      

    Cause: 

      The Mac address and serial number will not be the same as original default value

      in file.

      

    Fix:

      Added two new options:

      -m to ignore mac address and manufacturing CRC comparison.

      -v to ignore VPD data comparison.

      

Version 1.01: 



  1. Added -unlock command line option

  

    Problem:

      If the process was killed by other process, the exclusive 

      semaphore is locked forever. When we run the program, it will

      say "An instance is already running" and simply exit program.

      

    Cause:

      The purpose if the semaphore implemented was because we needed

      this program to run exclusively. However, since we cannot trap

      kill signal, we could not unlock the semaphore when the program

      is terminated. 

      

    Fix:

      Added -unlock command line option to take over the locked semaphore.

      

    Side effect:

      As a hardware diagnostics, this program must be running exclusively.

      With this option, however, user is able to override the exclusive

      operation and cause the diagnostics to fail. It is user's responsibility

      and understanding the purpose of the semaphore. 

      

  2. Changed ASF configuration bits

  

    Problem:

      ASF configuration, command "asfcfg" option 7, "ASF Misc. Info", data

      was stored in incorrect location. 

      

    Cause:

      There was big-endian and little-endian issue where bit 24 information

      was stored in bit 0. 

      

    Fix:

      Changed the bit ordering

      

  3. Fixed secfg in PPC system

  

    Problem:

      In Power PC systems, secfg command will return bootstrap checksum error

      and cannot go to configuration routine. 

      

    Cause:

      The checksum check routine was swapping checksum to little endian format

      for comparison.

      

    Fix:

      Changed the checksum to big endian format.

      

  4. Added NVRAM programming status display

  

    Problem:

      When program large block of NVRAM image, it takes long time. Especially 

      when if the device was SEEPROM. In this case, user may mistakenly think

      of program hang.

      

    Fix:

      Changed the code to show programming progress status.

  

  5. Added new command for ASF debugging capabilities

  

    Enhancement:

      We need more commands to support ASF debugging. 

      

    Changes:

      a. Added new command 'halt' to halt CPUs.

      b. Added new command 'u'/'disasm' to disassemble MIP instructions

      c. Added new command 'step' for stepping MIP instruction

      d. Added new command 'go' to jump cpu PC.

      e. Added new command 'asf' for debug version of ASF code. 

      

Version 1.00: 

    Initial Release

 



